Html.Display不会将值发布到ASP.NET MVC 3中的控制器

Yas*_*ser 36 asp.net-mvc razor asp.net-mvc-3

我正在使用带有Razor的ASP.NET MVC 3,下面是我的视图代码中的示例.

除"EmailAddress"字段外,用户应该能够编辑其所有详细信息.对于那个领域我只使用过Html.DisplayFor(m => m.EmailAddress).

但是当这个表单发布时,所有模型属性都被填充,除了EmailAddress.

发布时如何在模型中收回电子邮件?我应该使用除了以外的帮助DisplayFor吗?

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true, "Account update was unsuccessful. Please correct any errors and try again.")
    <div>
        <fieldset>
            <legend>Update Account Information</legend>
            <div class="editor-label">
                @Html.LabelFor(m => m.EmailAddress)
            </div>
            <div class="editor-field">
                @Html.DisplayFor(m => m.EmailAddress)
                @*@Html.ValidationMessageFor(m => m.EmailAddress)*@
            </div>           
            <div class="editor-label">
                @Html.LabelFor(m => m.FirstName)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(m => m.FirstName)
                @Html.ValidationMessageFor(m => m.FirstName)
            </div>
            <div class="editor-label">
                @Html.LabelFor(m => m.LastName)
            </div>
            <div class="editor-field">
            @Html.TextBoxFor(m => m.LastName)
                @Html.ValidationMessageFor(m => m.LastName)
            </div>
            <p>
                <input type="submit" value="Update" />                
            </p>
        </fieldset>
    </div>
}
Run Code Online (Sandbox Code Playgroud)

请告诉我这个.

Rap*_*aus 53

你需要添加一个

@Html.HiddenFor(m => m.EmailAddress)
Run Code Online (Sandbox Code Playgroud)

DisplayFor 不会在POST中发送任何内容,也不会创建输入...

顺便说一下

@Html.HiddenFor(m => m.Id) // or anything which is the model key

会有用的

  • 发现这个http://stackoverflow.com/a/11057087/1182982信息非常丰富! (8认同)