Как «высушить» атрибуты C# в моделях и моделях View?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как «высушить» атрибуты C# в моделях и моделях View?

Сообщение Anonymous »

Этот вопрос был вдохновлен моей борьбой с ASP.NET MVC, но я думаю, что он применим и к другим ситуациям. />

Код: Выделить всё

public class FooModel // ORM generated
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string EmailAddress { get; set; }
public int Age { get; set; }
public int CategoryId { get; set; }
}
< /code>

 show viewmodel < /strong> < /p>

public class FooDisplayViewModel // use for "details" view
{
[DisplayName("ID Number")]
public int Id { get; set; }

[DisplayName("First Name")]
public string FirstName { get; set; }

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

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

public int Age { get; set; }

[DisplayName("Category")]
public string CategoryName { get; set; }
}
< /code>

 edit viewmodel < /strong> < /p>

public class FooEditViewModel // use for "edit" view
{
[DisplayName("First Name")] // not DRY
public string FirstName { get; set; }

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

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

public int Age { get; set; }

[DisplayName("Category")] // not DRY
public SelectList Categories { get; set; }
}
< /code>

Обратите внимание, что атрибуты на ViewModels не сухие-много информации повторяется. Теперь представьте, что этот сценарий умножен на 10 или 100, и вы можете увидеть, что он может быстро стать довольно утомительным и склонным к ошибкам, чтобы обеспечить согласованность между ViewModels (и, следовательно, по представлениям). < /P>

 Как я могу «высушить» этот код? Пробовал это, но это не сработало, потому что мне нужно сохранить «ViewModels» в плоских ». Другими словами, я не могу просто сочинять каждую ViewModel с моделью-мне нужно, чтобы моя просмотра была только свойства (и атрибуты), которые следует поглощать представлением, и представление не может привести к всплескам, чтобы получить значения. Это определенно уменьшает объем не сухих кода, но не устраняет его. Обратите внимание, что в моем примере выше, атрибут DisplayName 
для свойства категории должен быть записан дважды, потому что тип данных свойства отличается между отображением и редактированием ViewModels. Это не будет иметь большого значения в небольших масштабах, но по мере того, как размер и сложность проекта увеличивается (представьте себе гораздо больше свойств, больше атрибутов на свойство, больше видов на модель), все еще есть потенциально для «повторения себя» достаточного количества. Возможно, я здесь слишком далеко забираю, но я все еще предпочел бы иметь все свои «дружелюбные имена», типы данных, правила проверки и т. Д.>

Подробнее здесь: https://stackoverflow.com/questions/226 ... viewmodels
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»