2016-04-01 8 views
2

Есть ли способ удалить проверку модели для некоторых свойств в модели в ASP.Net MVC6.Удалить ошибки ModelState в ASP.NET MVC

Я наткнулся на этот пост Is there a strongly-named way to remove ModelState errors in ASP.NET MVC

, который предлагает использовать, ModelBindingHelper.ClearValidationStateForModel (тип, ModelStateDictionary, IModelMetadataProvider, строка).

Но я не могу найти дальнейшую помощь по этому вопросу.

Может ли кто-нибудь предложить рабочий пример удаления свойства модели с помощью ClearValidationStateForModel?

+0

Что вы пытаетесь сделать? Вы хотите удалить ошибку проверки модели для нескольких свойств? – Shyju

ответ

2

Это должно удалить ошибки проверки для свойства Title вашей модели изображения CreatePost.

[HttpPost] 
public ActionResult Create(CreatePost model) 
{ 
    if (ModelState.IsValid) 
    { 
     //to do : Save and return something 
    } 
    ModelBindingHelper.ClearValidationStateForModel(model.GetType(), 
               ModelState,MetadataProvider,"Title");   
    return View(model); 
} 

Также ModelState.ClearValidationState также будет работать.

ModelState.ClearValidationState("Title"); 

EDIT: В соответствии с замечанием, OP хочет исключить определенное свойство быть подтверждено на основе другого значения свойства. Это должно работать нормально.

[HttpPost] 
public ActionResult Create(CreatePost model) //CreatePost model 
{ 
    if (model.Type == 1) 
    { 
     ModelBindingHelper.ClearValidationStateForModel(model.GetType(), 
                ModelState, MetadataProvider, "Title"); 
    } 
    if (ModelState.IsValid) 
    { 
     // to do : Do useful stuff and return something 
    } 
    return View(model); 
} 
+0

Оба они, кажется, не работает в ASP.Net MVC 6. Ниже, как я использую его: [HttpPost] общественного ActionResult Создать (модель CreatePost) { // Я хочу, чтобы пропустить валидация для заголовка, поэтому я добавил эту строку перед проверкой ModelState.IsValid ModelBindingHelper.ClearValidationStateForModel (model.GetType(), ModelState, MetadataProvider, «Title»); если (ModelState.IsValid) { // сделать: Сохранить и вернуть то, что } возвращение View (модель); } –

+0

Что значит, что он не работает на MVC6? Я просто проверил это в проекте MVC 6 и отлично работает (как dnx 451, так и dnxcore50). В частности, что не работает для вас? – Shyju

+0

У меня есть разные свойства в модели, одна из которых - Type и Other is Duration, я хочу пропустить проверку продолжительности, если выбранный тип равен 1, тогда как я хочу запустить проверку для всех других типов. В MVC5 ModelState.Remove («Продолжительность»); перед проверкой ModelState.IsValid работал, это, похоже, не работает в MVC 6. Я также попробовал ваше предлагаемое решение, то есть ModelState.ClearValidationState («Duration»); перед проверкой ModelState.IsValid, но он работает ModelState.IsValid возвращается как сбой. Я проверил, что все другие свойства модели имеют достоверные данные. –

Смежные вопросы