0

モデルをコントローラーに戻そうとしていますが、何らかの理由でコントローラーが常に 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;" />
    }
4

1 に答える 1

1

@Modelは複合型のように見えるため、入力フィールドの値として割り当てることはできません。

できる最善の方法は、 を使用し@Html.EditorForてモデルに必要な html フィールドを生成することです。これにより、それらが Company オブジェクトとしてポストバックされることが保証されます。

これを交換

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

@Html.EditorFor(model => model)
于 2013-01-22T23:04:39.643 に答える