In meiner MVC3 Anwendung ausgelöst Ich habe das Modell (nicht wichtige Eigenschaften gelöscht):Validierung Attribut zweimal erhält
public class AccountViewModel
{
[StringLength(65)]
public string Property1 { get; set; }
[StringLength(65)]
public string Property2 { get; set; }
}
Das Problem ist, wenn eine Aktion submited ist Attribut Validierung zweimal aufgerufen, und ich kann 4 Fehlermeldungen erhalten Zusammenfassend, anstelle von 2:
'Property1' length must be less than 65 characters
'Property1' length must be less than 65 characters
'Property2' length must be less than 65 characters
'Property2' length must be less than 65 characters
Ich verwende nicht Validate-Methode in meinem Controller-Code. Das Problem tritt auch mit meinen benutzerdefinierten Attributen auf, aber es tritt nicht mit Required-Attribut auf. Auch muss ich, dass Ctor der benutzerdefinierten beachten Sie auch zweimal
genannt Attribute Meine Aktion
[HttpPost]
public ActionResult CreateOrEdit(AccountViewModel model) {
if (!ModelState.IsValid) {
return View("Edit", model);
}
try {
_accountService.InsertOrUpdate(model);
}
catch (Exception ee) {
ModelState.AddModelError("", ee.Message);
return View("Edit", model);
}
return RedirectToAction("Index");
}
anzeigen, auf die ich machen meine Fehler mit:
@{
var errors = ViewData.ModelState.Errors();
<div class="alert alert-block alert-error @(errors.Count == 0 ? "hide" : "")" >
<h4 class="alert-heading"> You got an error!</h4>
<ul>
@foreach (var error in errors) {
<li>@error</li>
}
</ul>
</div>
}
Und ich verdoppeln Wieder nochmals überprüfen dass ViewData.ModelState bereits zweimal Fehler enthält.
Hmmm Sie haben 55 in Attribut-Deklaration und 65 Wert in Fehlermeldung –
können Sie die Aktion posten? Bestätigen Sie außerdem, dass Sie "ValidationSummary" in Ihrer Ansicht nicht zweimal aufrufen. –
aktualisiert mit Action-Code @Steve Mallory – bogert