Поля модели MVC2 равны нулю при обратной передаче

#asp.net #asp.net-mvc-2

#asp.net #asp.net-mvc-2

Вопрос:

Я пытаюсь отправить обратно из строго типизированного представления на мой контроллер.

проблема в том, что в модели есть пара полей, которые я не хочу разрешать пользователю редактировать. в идеале я просто хочу отображать их в виде меток, но когда я делаю это, они становятся нулевыми при публикации…

вот соответствующий код представления: это выглядит так, как я хочу, чтобы это выглядело, т.е. firstname и lastname — это метки

  <td width="75px"><%: Html.DisplayFor(model=>model.FirstName, new{disabled="true"}) %></td>
          <td width="75px"><%: Html.DisplayFor(model => model.LastName)%></td>
          <td width="100px"><%: Html.LabelFor(model => model.EmailAddress) %></td>
          <td width="75px"><%: Html.TextBoxFor(model => model.EmailAddress) %></td>
          <td><%: Html.ValidationMessageFor(model => model.EmailAddress) %></td>
  

Модель выглядит следующим образом:

открытый класс PersonModel { [Обязательно] [DisplayName(«Имя пользователя»)] общедоступная строка FirstName { получить; установить; }

     [Required]
    [DisplayName("Last Name")]
    public string LastName { get; set; }

    [DisplayName("Email Address")]
    public string EmailAddress { get; set; }
  

}

контроллер выглядит следующим образом:

[HttpPost] публичный ActionResult RsvpToInvitation (PersonModel отправил приглашение) {…}

Я удалил изрядное количество кода из всего этого … в основном мой вопрос заключается в том, как я могу отобразить свойство модели в виде метки и по-прежнему отправлять его обратно в контроллер?

Ответ №1:

Вы пробовали сохранять значения с помощью Html.Hidden помощника?

Комментарии:

1. У меня создалось впечатление, что скрытые значения также не отправляются обратно? позвольте мне попробовать

2. я ошибаюсь! это работает. спасибо за супер быстрый ответ, Кену тоже спасибо!

3. @Dan, в StackOverflow ты говоришь «спасибо», голосуя за ответы. Ну, только хорошие 🙂

Ответ №2:

Вы можете сделать их скрытыми полями в вашем представлении.

 <%: Html.Hidden("LastName", Model.LastName) %>
<%: Html.Hidden("EmailAddress ", Model.EmailAddress) %>