Ho un'azione che salva un record chiamando il metodo Save dell'entità BLL. L'entità si prende cura della propria convalida interna e se un campo è richiesto ma fallisce la convalida perché un utente non ha inserito un valore allora l'entità genera un errore. Sto riscontrando questo errore nella mia azione e restituisco la stessa vista. Il problema è che l'errore non viene visualizzato nel mio ValidationSummary.Errori ModelState non visualizzati in vista
Sì. Mi rendo conto che la convalida del modello di vista è stata eseguita da attibute con MVC ma questa entità è utilizzata altrove e deve avere convalida ridondante se l'interfaccia utente non lo può/non può farlo, ad esempio utilizzato in un processo di assistenza batch.
Qui è la mia azione:
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);
}
Qui è la mia opinione:
@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>
}
Perché non l'errore aggiungo a ModelState essere mostrato nel mio ValidationSummary?
E 'stato così !! Grazie! –
@CDSmith Felice di aiutare. :) –
So che questo è vecchio e tutto, ma sono l'unico confuso e non penso davvero che questa sia la risposta? Il parametro bool è 'excludePropertyErrors'. Il metodo utilizzato per aggiungere un errore è 'ModelState.AddModelError' - quindi aggiungiamo un errore ** model ** e escludiamo ** property ** errori, quindi qual è il problema? Perché mostrare errori ** property ** mostra l'errore ** model ** aggiunto? È un bug nel riepilogo di convalida o un metodo ModelState scarsamente chiamato, giusto? –