2011-12-16 13 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