0
我有這樣一個模型類:
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;
}
}
}
}
和家庭控制器定義的添加方法:
[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變量正確地輸入了輸入值。 問題是來自Model的struct
或什麼?
我試過其他場景。我定義了一個具有所有屬性的類,並在LocalizationModel
類中使用它。它與jquery ajax完美協作並將正確的參數傳遞給控制器函數。
爲什麼如果我使用struct
,控制器參數爲空?有一個竅門?
我把一個斷點控制器功能(使用Visual Studio),我檢查了參數。
Id和其他變量爲空。我附上一張照片:
謝謝
謝謝特拉維斯,這就是爲什麼我的腳本不工作......謝謝:)上帝保佑你:D – 2011-12-16 08:59:33