Поле ASP.NET MVC только для чтения, основанное на действии в частичном представлении - PullRequest
0 голосов
/ 20 марта 2009

При использовании частичного представления в ASP.NET MVC для инкапсуляции разметки создания / редактирования, каков наилучший способ изменить элемент управления, отображаемый на основе действия?

Например, я хочу разрешить ввод адреса электронной почты только после создания учетной записи (через текстовое поле) и последующего просмотра (через обычный HTML) при просмотре учетной записи.

В псевдокоде я ожидаю что-то вроде этого:

<% if(Action == Create) {
  Html.TextBox("EmailAddress")
} else { 
  Html.Encode(Model.Person.EmailAddress)
} %>

Есть предложения?

1 Ответ

1 голос
/ 20 марта 2009

Вы можете использовать свой собственный класс HTML Helper для инкапсуляции логики:

public static string DualModeTextBox(this HtmlHelper helper, ViewMode viewMode, string textBoxName, string textBoxValue)
{
  if (viewMode == ViewMode.Edit) {
    return System.Web.Mvc.Html.InputExtensions.TextBox(helper, textBoxName);
  } 
  //else
  return helper.Encode(textBoxValue);
}

Для более сложных задач вы также можете рассмотреть MVC элементы управления .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...