ASP.NET MVC3 с использованием как Model, так и пользовательской ValidationModel в представлении - PullRequest
2 голосов
/ 13 мая 2011

У меня есть вид, подобный этому (неважно, что пропущено):

@model MyProject.Models.Accounts

        <div class="editor-label">
            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name)
        </div>

Теперь у меня есть отдельная модель, которую я хочу использовать для проверки.Можно ли использовать как мою модель для данных, так и эту модель проверки в представлении?Примерно так:

@model MyProject.Models.Accounts
@validaitonmodel MyProject.Models.AccountValidationModel

            <div class="editor-label">
                @Html.LabelFor(model => model.Name)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Name)
                @Html.ValidationMessageFor(validationmodel => validationmodel.Name)
            </div>

Заранее спасибо.

РЕДАКТИРОВАТЬ

Под "моделью" я подразумеваю моделикоторые автоматически генерируются .edmx (объектами самообследования Ado.net)

Под ValidationModel я имею в виду собственный класс, подобный этому:

public class AccountValidationModel
{
    [Required]
    public String Name {get; set;}
}

Ответы [ 2 ]

3 голосов
/ 13 мая 2011

Я думаю, что в целом более приемлемой практикой является либо:

  1. Добавьте атрибуты к вашей модели данных.
  2. Свяжите свой вид с отдельной ViewModel (в нашем случае AccountValidationModel) и используйте инструмент картографирования (например, AutoMapper ) для сопоставления данных между двумя вашими моделями.
1 голос
/ 13 мая 2011

Может быть, атрибут MetadataType может вам помочь? http://msdn.microsoft.com/en-us/library/ee256141.aspx

Модель проверки должна реализовывать все проверяемые свойства, а атрибут MetadataTypeAttribute должен применяться к самой модели.

Быстрый образец из stackoverflow: Модель проверки ASP.Net C # на основе MetadataType

Или, как парень, ищите другой способ проверки с помощью свободной проверки (никогда не пытался) http://fluentvalidation.codeplex.com/wikipage?title=mvc&referringTitle=Documentation

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