将模型发布回ASP.NET MVC3中的控制器

时间:2013-01-22 23:01:17

标签: c# asp.net-mvc-3 forms

我正在尝试将模型发布回控制器但由于某种原因控制器总是返回NULL。我知道我做的事情显然是错的。它是什么?

但是,如果我从该模型回发特定属性,它就可以正常工作。

控制器:

[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 个答案:

答案 0 :(得分:1)

@Model似乎是一个复杂的类型,因此您无法将其指定为输入字段的值。

您可以做的最好的事情是使用@Html.EditorFor为模型生成所需的html字段,这将确保它们作为公司对象回发。

替换此

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

@Html.EditorFor(model => model)