Ich bin mit Bindemittel benutzerdefinierte Modell in ASP.NET MVC 2, der wie folgt aussieht:Einstellung Model Werte in benutzerdefinierten Modell Binder
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (controllerContext == null)
{
throw new ArgumentNullException("controllerContext");
}
if (bindingContext == null)
{
throw new ArgumentNullException("bindingContext");
}
BaseContentObject obj = (BaseContentObject)base.BindModel(controllerContext, bindingContext);
if(string.IsNullOrWhiteSpace(obj.Slug))
{
// creating new object
obj.Created = obj.Modified = DateTime.Now;
obj.ModifiedBy = obj.CreatedBy = controllerContext.HttpContext.User.Identity.Name;
// slug is not provided thru UI, derivate it from Title; property setter removes chars that are not allowed
obj.Slug = obj.Title;
ModelStateDictionary modelStateDictionary = bindingContext.ModelState;
modelStateDictionary.SetModelValue("Slug", new ValueProviderResult(obj.Slug, obj.Slug, null));
...
Wenn ich von diesem Bindemittel in Controller-Aktion zurück Objekt, mein Geschäft, das ist als Parameter für die Aktion zur Verfügung gestellt wird korrekt geändert (die Zeilen obj.Created = .... arbeiten).
Der ModelState wird jedoch nicht aktualisiert. Ich weiß das, weil ich Required für die Slug-Eigenschaft meines Geschäftsobjekts habe und obwohl ich ModelStateDictionary in meinem benutzerdefinierten Modellbinder geändert habe, indem ich einen Slug für ihn bereitstelle (wie Sie oben sehen können), ist ModelState.IsValid immer noch falsch.
Wenn ich ModelState ["Slug"] in mein Watch-Fenster in der Debug-Sitzung einfüge, heißt es, dass es Errors (1) hat, also scheinbar leer ist und als solches fehlschlägt.
Wie kann ich den ModelState innerhalb des benutzerdefinierten Modellbindercodes korrekt ändern?
Ihre Lösung muss bei Stackoverflow klebrig sein. Ich habe hoch und niedrig gesucht und experimentiert, bis ich das von dir gefunden habe. Ich garantiere Ihnen, nicht viele Leute kennen diesen Trick. Du hast meine Tage gerettet! Vielen Dank! – Stack0verflow
Ich habe deine Lösung versucht, und es hat irgendwie für meine Situation funktioniert. Könnten Sie sich meine Frage unter http://stackoverflow.com/questions/23145780/asp-net-mvc-4-how-to-validate-my-model-in-a-custom-model-binder ansehen? Vielen Dank! – Stack0verflow