Подтвердить что ты не робот

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>
}

Пожалуйста, посоветуйте мне об этом.

4b9b3361

Ответ 1

вам нужно добавить

@Html.HiddenFor(m => m.EmailAddress)

DisplayFor ничего не отправит в POST, он не создаст вход...

Кстати,

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

было бы полезно