Ищу советы по проверке модели ASP.NET MVC с атрибутами аннотаций данных в VB.NET - PullRequest
0 голосов
/ 26 февраля 2011

Итак, после некоторых экспериментов я с удивлением обнаружил, что это вполне приемлемо, в том смысле, что MVC не жалуется на мой защищенный внутренний абстрактный класс метаданных, и проверка модели все еще работает:

Объект частичного домена , созданный инструментом:

Partial Public Class SampleDomainObject

    Private _id As Integer
    Private _customCode As String
    Private _description As String

    Public Property ID() As Integer
        Get
            Return Me._id
        End Get
        Set(ByVal value As Integer)
            Me._id = value
        End Set
    End Property

    Public Property CustomCode() As String
        Get
            Return Me._customCode
        End Get
        Set(ByVal value As String)
            Me._customCode = value
        End Set
    End Property

    Public Property Description() As String
        Get
            Return Me._description
        End Get
        Set(ByVal value As String)
            Me._description = value
        End Set
    End Property

End Class

Объект частичного домена , реализация метаданных

<MetadataType(GetType(SampleDomainObject.Metadata))> _
Partial Public Class SampleDomainObject

    Protected Friend MustInherit Class Metadata

        <HiddenInput()> _
        Public MustOverride Property ID() As Object

        <Required(), _
        StringLengthRange(4), _
        DisplayName("Custom Code")> _
        Public MustOverride Property CustomCode() As Object

        <Required(), _
        StringLength(255)> _
        Public MustOverride Property Description() As Object

    End Class

End Class

Я сделал это, потому что не сделалЯ хочу реализовать фактические свойства с помощью вспомогательных полей, методов получения и установки в VB.NET для класса метаданных, чтобы свести обслуживание к минимуму (я на .NET 3.5, для меня нет авто-свойств).

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

Итакмой вопрос, в мире лучших практик MVC, это приемлемо?Умный даже?Я новичок в MVC, поэтому я приму любой отзыв, который смогу получить.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 26 февраля 2011

Приемлемая? Для некоторых. Умная? Нет.

Использование шаблона ViewModel намного лучше. Логика вашего бизнеса / домена / ядра не должна указывать на внешний вид и уровень пользовательского интерфейса. Уровни представления и пользовательского интерфейса должны указывать на логику вашего бизнеса / домена / ядра.

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

Кроме того, если ваше приложение не является тривиальным по природе, я уверен, что вы найдете сценарии, в которых классы друзей просто не обрезают его. Хорошим примером является ситуация, когда существуют разные требования для сценариев добавления и редактирования. Вспоминаются поля пароля пользователя.

0 голосов
/ 26 февраля 2011

В приложениях Silverlight, использующих службы RIA, классы метаданных выглядят очень похоже, за исключением MustInherit .Я подозреваю, что ваши практики следуют соответствующим образом хорошим практикам, даже вне контекста MVC, учитывая, что такое поведение можно наблюдать с помощью доменных служб MVC и .

Я спросилсвязанный вопрос вчера.Ответ описывает, как этот вид стратегии классов приятелей эффективно работает в ситуациях, когда доменные классы генерируются кодом.Классы друзей обеспечивают защиту от перезаписи кода.(См. Почему классы друзей используются для проверки? .)

...