У меня есть такой класс модели:
namespace Models
{
public struct Localization
{
public int Id;
public string LanguageName;
public string LanguageCode;
public DateTime LastUpdate;
}
public class LocalizationModel
{
private List<Localization> _localization;
public LocalizationModel() {
Browse();
}
//create simple list
public void Browse() {
Localization lang = new Localization();
_localization = new List<Localization>();
for ( int i = 1; i <= 3; i++ ) {
lang.Id = i;
lang.LanguageName = "Language name " + i;
lang.LanguageCode = "Language code " + i;
lang.LastUpdate = DateTime.Now;
_localization.Add( lang );
}
}
public bool AddNewLanguage( Localization item ) {
if ( ( item as object ) == null ) {
throw new ArgumentException( "The localization cannot be empty" );
}
_localization.Add( item );
return true;
}
public List<Localization> LocalizationList {
get {
return _localization;
}
}
}
}
И метод Add , определенный в Home Controller:
[HttpPost]
public ActionResult Add( Localization sendInfo ) {
bool success = _localization.AddNewLanguage( sendInfo );
return this.Json( new {
msg = success
} );
}
Я вызвал этот метод из функции jquery ajax так:
function sendDataForAdd() {
var sendInfo = { Id: 0,
LanguageName: $("#lang-name").val(),
LanguageCode: $("#lang-code").val(),
LastUpdate: $("#lang-update").val()
};
$.post('/Home/Add', sendInfo, doneLanguageAdded, 'json');
function doneLanguageAdded(msg) {
if (msg) {
alert("The language was added successfully !");
window.location.refresh(true);
}
else {
alert("The language was not added in list !");
}
}
}
Проблема в том, что функциональный параметр Add
-> sendInfo
от контроллера становится нулевым.
Переменные javascript правильно принимают входные значения.
Проблема в struct
от модели или как?
Я пробовал другой сценарий. Я определил класс со всеми свойствами и использую его в LocalizationModel
классе. Он отлично работает с jquery ajax и передает правильный параметр в функцию контроллера.
Почему, если я использую struct
, параметр контроллера равен нулю? Есть трюк?
Я установил точку останова для функции контроллера (используя Visual Studio) и проверил параметр.
Id и другие переменные равны нулю. Я приложил картинку:
Спасибо