Ich habe folgendes ModellVerwenden von MVC Model Binder, wie verhindert werden, innere komplexe Objekteigenschaften zu binden?
public class Person
{
public int Id {get;set;}
[Required()]
public string Name {get;set;}
[Required()]
public Address Address {get;set;}
}
public class Address
{
public int Id {get;set;}
[Required()]
public string City {get;set;}
[Required()]
public string Street {get;set;}
}
in der Steuerung:
[HttpPost]
public ActionResult Create(Person entity)
{
if (ViewData.ModelState.IsValid)
{
///Some code
return this.RedirectToAction("Browse");
}
else
{
return View("Edit", ViewModel);
}
}
das Problem ist, dass das Bindemittel auch die innere Adresse Klasse zu bestätigen versuchen, aber alles für mich mich, ist die AddressID aber der ModelBinder besteht darauf, sogar die Eigenschaften der Stadt und der Straße zu validieren.
Wie kann ich einfach den ursprünglichen ModelBinder überschreiben, nur um die ID des inneren Objekts zu validieren (was in meiner Situation AddressID ist)?
gibt es einen einfachen Weg?
Nun, vielleicht ist das Beispiel, das ich in der Frage schrieb, zu einfach, aber die Situation ist komplexer als das, sagen wir, ich habe ein Auftragsobjekt und einen Kunden, wenn ich die Bestellung speichern, die ganze Datenbank Pflege (um den Auftrag zu speichern) ist nur die CustomerID, nicht sein Name oder sein Kriegszustand. Wenn der Benutzer also eine Bestellung ausführt, wählt er einfach den Kunden aus, und wir nehmen einfach seine ID. deshalb möchte ich nicht, dass der mvc das gesamte kundenobjekt validiert. –
In diesem Fall würde ich mit meinem ersten Vorschlag gehen, eine separate Klasse haben, an die MVC bindet, und dann Ihre Dateneinheiten eingeben, nachdem die gesamte Validierung durchgeführt wurde. –
oder vielleicht kann ich die Art und Weise wie MVC-Modelle binden, und es nur die ID des komplexen Objekts binden ?? –