СУХОЙ в ASP.NET MVC - отображение деталей против формы редактирования - PullRequest
4 голосов
/ 04 января 2009

Я пытаюсь изучить ASP.NET MVC и столкнулся с этой проблемой: у меня есть форма «Просмотр сведений о продукте», которую я хочу использовать в качестве формы добавления / редактирования. (При просмотре сведений о продукте, если у вас есть права для этого, должна появиться ссылка «Изменить»; она должна снова отобразить ту же форму, но с включенными на этот раз полями текстового поля.)

В данный момент представление «Детали» выглядит примерно так:

<% var product = ViewData.Model; %>
<table>
  <tr>
    <td>Name</td>
  </tr>
  <tr>
    <td><%= Html.TextBox("Name", product.Name, new { size = "50", disabled = "disabled"})%></td>
  </tr>

Есть ли способ, которым я мог бы использовать его снова, не помещая слишком много логики в представление? Например, мне нужно будет удалить часть disabled = "disabled" (но часть size должна остаться там), поместить все в форму и т. Д.

Если это не может быть сделано, это нормально, я просто пытаюсь не повторять одно и то же несколько раз на случай, если мне нужно будет это изменить (и я сделаю это).

Ответы [ 2 ]

10 голосов
/ 05 января 2009

Используя MvcContrib.FluentHtml , вы можете сделать это следующим образом (улучшив предложение Тодда Смита):

<%=this.TextBox(x => x.Name).Size(50).Disabled(ViewData.Model.CanEdit)%>
5 голосов
/ 05 января 2009

Вы всегда можете передать значение, указывающее, в каком режиме вы находитесь или какие у вас привилегии:

ViewData.Model.CanEdit

Так что вы можете создать составной класс для вашей модели, а не просто использовать Product

public class ProductViewData
{
    public Product Product {get; set;}
    public bool CanEdit {get; set;}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...