2011-12-16 85 views
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和其他变量为空。我附上一张照片: enter image description here

谢谢

回答

2

你的结构需要有getter和setter。

public struct Localization 
{ 
    public int Id {get; set;} 
    public string {get; set;} 
    public string {get; set;} 
    public DateTime {get; set;} 
} 
+0

谢谢特拉维斯,这就是为什么我的脚本不工作......谢谢:)上帝保佑你:D – 2011-12-16 08:59:33