2013-01-22 63 views
0

我想將模型發回控制器,但由於某種原因,控制器總是返回NULL。我知道我在做一些非常明顯的錯誤。它是什麼?在ASP.NET MVC3中發佈模型回控制器

但是,如果我從該模型回發一個特定的屬性,它工作得很好。

控制器:

[HttpPost] 
     public void MyAction(Company company) 
     { 
      System.Diagnostics.Debug.WriteLine("STUFF:" + company.dbName); 
      if(company.CompanyOptions!=null)foreach (var item in company.CompanyOptions.CompanyLicenseOptions.CompanyLicenseOptionsList) System.Diagnostics.Debug.WriteLine("STUFF:" + item); 
      else System.Diagnostics.Debug.WriteLine("STUFF IS NULL"); 
     } 

查看:

@model Domain.Entities.Company 
    @using (Html.BeginForm("MyAction", "Controller", FormMethod.Post)) 
    { 
     foreach (var licensedFeature in Model.CompanyOptions.CompanyLicenseOptions.CompanyLicenseOptionsList) 
     { 
      @Html.CheckBox(licensedFeature.LicenseName, licensedFeature.IsLicensed, checkboxHtmlAttributes); 
      @licensedFeature.LicenseName                       
     } 
     <input type="hidden" name="company" value="@Model"/> 
     <input id="submit_licenses" type="submit" style="display:none;" /> 
    } 

回答

1

@Model似乎是一個複雜的類型,所以你不能分配給作爲輸入字段的值。

您可以做的最好的方法是使用@Html.EditorFor爲模型生成所需的html字段,這將確保它們作爲公司對象回發。

替換此

<input type="hidden" name="company" value="@Model"/> 

@Html.EditorFor(model => model) 
+0

這對於一個頂級複雜類型的偉大工程,但如果模型包含任何其他複雜的對象,這個停止工作。 – Johannes

+0

我正在使用模型發佈和ajax張貼複雜模型,它運作良好,並綁定...你有一些具體的例子,我可以舉例說明嗎? – kunjee

相關問題