Почему есть [Display (AutoGenerateField = false)] и [HiddenInput (DisplayValue = false)]? - PullRequest
2 голосов
/ 16 сентября 2011

Заголовок вроде говорит сам за себя.

Похоже, есть два способа пометить поле как "Пожалуйста, не показывать в пользовательском интерфейсе" с атрибутами.Один живет в пространстве имен DataAnnotations, к которому, как мне кажется, он принадлежит, а другой живет в специфичном для MVC пространстве имен System.Web.Mvc, который, как мне кажется, является неподходящим.

Это означает, что дляВ приложении MVC я должен испачкать свой класс домена пространством имен MVC, а не использовать «более общий» ComponentModel.DataAnnotations.

Есть ли способ заставить инфраструктуру MVC обратить внимание на атрибут Display ()

Ответы [ 2 ]

4 голосов
/ 16 сентября 2011

Вы должны использовать ViewModels в представлении, а не сущности из вашего домена.Поскольку ViewModels (или команды) являются специфическими для представления, не имеет значения, имеют ли они ссылку на System.Web.x.

Я бы посмотрел на SoC: http://en.wikipedia.org/wiki/Separation_of_concerns

И Automapper / W ViewModels: http://bengtbe.com/blog/2009/04/14/using-automapper-to-map-view-models-in-asp-net-mvc/

Также, чтобы ответить на ваш вопрос:

[HiddenInput (DisplayValue = false)] будет отображать <input id="propId" name="propId" type="hidden" value="21" />

Отображение (AutoGenerateField = false)] не будет отображаться вообще.

2 голосов
/ 16 сентября 2011

Несмотря на то, что вы действительно должны принять к сведению ответ Пола относительно использования ViewModels, обычное решение вашей проблемы состоит в украшении вашего свойства атрибутом UIHint, который находится в пространстве имен System.ComponentModel.DataAnnotations.

, например

[UIHint("Hidden")]

Затем добавьте небольшой шаблон представления в Shared \ EditorTemplates \ Hidden.cshtml, например

@model object
@Html.HiddenFor( x => x)

Где имя шаблона соответствует строке, указанной в UIHint

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