2014-02-17 3 views
1

У меня есть следующий код для генерации сообщения ввода и проверки html.ModelState.AddModelError для конкретного ValidationMessageFor поля?

@Html.ValidationSummary(false) 
...... 
<div class="col-md-10"> 
    @Html.TextBoxFor(model => model.ImageUpload, new { type = "file", name = "file" }) 
    @Html.ValidationMessageFor(model => model.ImageUpload) 
</div> 

В моем действии у меня есть код

if (.... something wrong with the input ....) 
{ 
    ModelState.AddModelError("", "Invalid image file."); 
    return RedirectToAction(.... 

Тем не менее, появится сообщение об ошибке в кратком валидация разделе. Возможно ли также показать сообщение об ошибке в секции сообщения проверки для ввода?

ответ

3

Вам необходимо предоставить ключ:

ModelState.AddModelError("ImageUpload", "Invalid image file."); 
+0

Это не сработало для меня. – Zac

+1

Нет, это не работает. Проверьте [это решение] (http://stackoverflow.com/questions/12688082/validationmessagefor-together-with-addmodelerrorkey-message-whats-the-key). – Peter

+0

Спустя 3,5 года это сработало отлично для меня. –

0

Это не точно ответить на УОП оригинальный вопрос, но то, что я искал была возможность добавлять ошибки модели в ModelState для контроля на моя форма, которая не была частью модели. Способ сделать это - добавить помощника ValidationMessage на страницу, которую вы можете ссылаться в вызове AddModelError по имени. Пример:

@Html.ValidationSummary(false) 
...... 
<div class="col-md-10"> 
    <input name="FileName" /> 
    @Html.ValidationMessage("FileNameValidation") 
</div> 

Затем в своем действии контроллера, вы можете сделать:

if (.... something wrong with the input ....) 
{ 
    ModelState.AddModelError("FileNameValidation", "Please fix the File Name."); 
    return View(viewModel); 
} 

Надеется, что это помогает кто-то с несколькими иной ситуацией.

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