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