Аннотации данных не работают в модели представления - PullRequest
4 голосов
/ 06 января 2012

У меня есть несколько разных моделей со свойствами, которые я украсил аннотациями данных для проверки.

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

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

public class CustomerModel
{
    [Required,
    DisplayName("Address")]
    public string Adress { get; set; }

    [Required,
    DisplayName("City")]
    public string City { get; set; }
}

Когда я помещаю их в модель вида следующим образом:

public class OrderViewModel
{
    public BillingModel Billing { get; set; }
    public CustomerModel Customer { get; set; }
}

Они выглядят так:

<input id="Business_FirstName" name="Business.FirstName" type="text" value="" />

<input id="Business_LastName" name="Business.LastName" type="text" value="" />

Моя бритва выглядит так:

@Html.TextBoxFor(x => x.Business.FirstName)
@Html.TextBoxFor(x => x.Business.LastName)

У меня есть много свойств, которые должны жить в своих собственных классах, поскольку каждый класс содержит определенные методы. Даже если я добавлю [Required] к каждому свойству в модели представления, оно все равно не будет работать.

Ответы [ 2 ]

7 голосов
/ 06 января 2012

Вам также необходимо поместить следующие элементы <script /> в ваше представление (предпочтительно представление _layout.cshtml, если вы будете использовать проверку на стороне клиента для всех представлений):

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

Измените пути соответственно,Но это должно запустить вашу проверку.

Кроме того, используйте ValidationMessageFor () в своем представлении.Вот так:

@Html.TextBoxFor(x => x.Business.FirstName)
@Html.ValidationMessageFor(x => x.Business.FirstName)

@Html.TextBoxFor(x => x.Business.LastName)
@Html.ValidationMessageFor(x => x.Business.LastName)
4 голосов
/ 07 марта 2014

Просто для всех, кто сталкивается с этим, в дополнение к другому ответу, вам также необходимо включить следующие параметры web.config:

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

Это то, что позволяет аннотациям данных иметьвлияние на визуализированный HTML.

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