asp.net-mvc – Html.DisplayFor不发布值到控制器在ASP.NET MVC 3

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – Html.DisplayFor不发布值到控制器在ASP.NET MVC 3前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用ASP.NET MVC 3与Razor,下面是从我的视图代码的示例。

除了“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>
}

请告诉我这个。

解决方法

您需要添加一个
@Html.HiddenFor(m => m.EmailAddress)

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

顺便说一句

@ Html.HiddenFor(m => m.Id)//或任何是模型键

将是有用的

猜你在找的asp.Net相关文章