ASP.NET MVC добавляет проверку для необязательных полей - PullRequest
6 голосов
/ 30 марта 2012

У меня есть класс модели "Страна" со свойством "CultureId", который НЕ помечен как необходимый.Другой класс «CountryViewModel» содержит то же свойство «CultureId».

При отображении представления «Создать» я заметил, что атрибуты проверочных данных были добавлены в текстовое поле «CultureId», хотя аннотации данных не добавлялись.

Я использую

@Html.HiddenFor(mode => mode.CultureId)

В чем может быть причина такого поведения?

Спасибо

Ответы [ 4 ]

12 голосов
/ 30 марта 2012

Я предполагаю, что ваш CultureId - int.MVC автоматически добавляет необходимые теги к типам значений, которые не могут быть обнулены.

Чтобы отключить это, добавьте

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false; 

в Application_Start или сделайте свой int обнуляемым

8 голосов
/ 14 февраля 2015

Есть несколько способов справиться с этим -
а). Сделайте собственность как Nullable как

public int? Age  { get; set; }

б). Используйте ниже в классе контроллера -

ModelState["Age"].Errors.Clear();

с). Добавить в стартап- DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

0 голосов
/ 07 февраля 2013

попробуйте это:

ModelState["CultureId"].Errors.Clear();

if (ModelState.IsValid)     
    {
         .....
    }

Если для CultureId задано значение int, оно также даст желаемый результат ...

0 голосов
/ 30 марта 2012

если вы можете использовать аннотации данных, вы должны проверить это http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypeattribute.aspx

namespace MvcApplication1.Models
{
[MetadataType(typeof(MovieMetaData))]
public partial class Movie
{
}


public class MovieMetaData
{
    [Required]
    public object Title { get; set; }

    [Required]
    [StringLength(5)]
    public object Director { get; set; }


    [DisplayName("Date Released")]
    [Required]
    public object DateReleased { get; set; }
}

}

помогает установить валидации без моделей на стороне базы данных.

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