Mam akcję, która zapisuje rekord, wywołując metodę Save jednostki BLL. Jednostka dba o własną wewnętrzną walidację i jeśli pole jest wymagane, ale nie sprawdza poprawności, ponieważ użytkownik nie wprowadził wartości, to jednostka zgłasza błąd. Łapię ten błąd w mojej akcji i zwracam ten sam widok. Problem polega na tym, że błąd nie jest wyświetlany w moim ValidationSummary.Błędy ModelState nie są wyświetlane w widoku
Tak, zdaję sobie sprawę, że mam weryfikację modelu widoku przez attibute z MVC, ale ta jednostka jest używana w innym miejscu i musi mieć nadmiarowe sprawdzanie poprawności, jeśli interfejs użytkownika nie wykonuje/nie może tego zrobić, na przykład w zadaniu wsadowym.
Oto moje działanie:
public ActionResult Edit(EntityModel model) {
if (ModelState.IsValid) {
var entity = new Entity(model.ID, model.Name, model.IsActive);
try {
entity.Save(User.Identity.Name);
return RedirectToAction("List");
}
catch (Exception ex) {
ModelState.AddModelError("", ex.Message);
}
}
return View(model);
}
Tutaj jest moim zdaniem:
@model ELM.Select.Web.Models.EntityModel
@{
ViewBag.Title = "Edit";
}
<h2>Edit</h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>DefermentTypeViewModel</legend>
@Html.HiddenFor(model => model.ID)
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.IsActive)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.IsActive)
@Html.ValidationMessageFor(model => model.IsActive)
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
Dlaczego nie błąd dodaję do ModelState być pokazane w moim ValidationSummary?
To było to !! Dzięki! –
@CDSmith Cieszę się, że mogę Ci pomóc. :) –
Wiem, że to jest stare i wszystkie, ale czy jestem jedynym, który jest zdezorientowany i tak naprawdę nie myśli, że to jest odpowiedź? Parametr bool to "excludePropertyErrors". Metoda użyta do dodania błędu to 'ModelState.AddModelError' - więc dodajemy ** błąd ** i wykluczyliśmy ** błędy ** właściwości, więc jaki jest problem? Dlaczego wyświetlanie ** błędów ** wyświetla komunikat o błędzie ** model **? Jest to błąd w podsumowaniu sprawdzania poprawności lub źle nazwana metoda ModelState, prawda? –