Указание атрибутов ASP.NET MVC для автоматически сгенерированных моделей данных - PullRequest
2 голосов
/ 26 декабря 2010

Я очень новичок в ASP.NET MVC (а также в ASP.NET в целом) и собираюсь получить некоторые знания по этой технологии, поэтому извините, я могу задать несколько тривиальных вопросов.Я установил ASP.NET MVC 3 RC1 и пытаюсь сделать следующее.

Давайте рассмотрим, что у меня есть модель, которая полностью автоматически генерируется из таблицы с использованием шаблона «LINQ to SQL Classes» вVS2010.Шаблон генерирует 3 файла (два файла .cs и один файл .layout соответственно), и ожидается, что созданный частичный класс будет использоваться в качестве модели MVC.Давайте также рассмотрим, что один столбец БД, который отображается в модели, может выглядеть следующим образом:

[global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_Name", DbType = "VarChar(128)")]
public string Name {
    get {
        return this._Name;
    }
    set {
        if ( (this._Name != value) ) {
            // ... generated stuff goes here
        }
    }
}

Механизм ASP.NET MVC также предоставляет прекрасный декларативный способ указать некоторые дополнительные элементы, такие как * 1006.*, DisplayNameAttribute и другие приятные атрибуты.Но поскольку сопоставленная модель является чисто автоматически генерируемой моделью, я понял, что не должен изменять модель вручную и указывать такие поля, как:

[Required]
[DisplayName("Project name")]
[StringLength(128)]
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_Name", DbType = "VarChar(128)")]
public string Name {
    ...

, хотя этот подход работает отлично ... доЯ меняю модель в DBML-конструкторе, автоматически удаляя атрибуты ASP.NET MVC.Итак, как мне безопасно указать атрибуты ASP.NET MVC для моделей DBML и их полей?

Заранее спасибо, и с Рождеством.


Обновление № 1:

Ожидая ответов, я нашел такие вещи:

Ответы [ 2 ]

1 голос
/ 26 декабря 2010

Более правильный подход состоит в том, чтобы создать соответствующие DTO (ViewModels или как бы вы это ни называли) и сопоставить эти DTO с вашими объектами модели данных с помощью таких инструментов, как AutoMapper (преобразовать ваши полные объекты модели данных в чистые объекты и наоборот).

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

Посмотрите на галерею VS, и есть вероятность, что вы найдете много вариантов.

Может быть, найтихороший пример, например MicrosoftNLayerApp , использующий все эти методы, поможет вам в этом процессе.

И, наконец, ваш ответ состоит в том, чтобы аннотировать свойства класса DTO атрибутом DisplayName.

0 голосов
/ 31 декабря 2010

Поскольку я не хочу создавать какие-либо вспомогательные классы, я нашел статью, которая больше всего соответствует моим требованиям.Однако такой подход по какой-то причине не работает, но я все еще считаю, что это из-за моего отсутствия опыта ASP.NET MVC (см. Step 4: Creating a Custom [Email] Validation Attribute):

http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx

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