2009-08-23 18 views
36

Sagen Sie, wenn ich diesen Tisch in meinem db hatte: Das ProduktWie Bind Präfix verwenden?

für Sie hatte

ProductId 
ProductName 
ProductType 

Jetzt welchem ​​Grund auch immer ich meine Textfelder meine Ansicht Methode wie diese

Artikelname und Product so jetzt nicht nennen kann aussehen würde
public ViewResult Test([Bind(Exclude ="ProductId")] Product) 

Also jetzt durch mein Herumspielen würde nichts in diesem Produkt zusammengebracht, da sie unterschiedliche Namen haben.

Also ich denke, das ist, wo Prefix kommen würde, aber ich weiß nicht, wie man es benutzt. Noch wie verwende ich es und schließe gleichzeitig aus.

Kann mir jemand ein Beispiel geben?

Antwort

115

Das Präfix wird wie folgt verwendet, wenn aus Ihrer Sicht haben Sie ...

<select name="p.ProductType">....</select> 
<input type="text" name="p.ProductName" /> 

Sie können die eingehenden Form auf eine Instanz des Modells binden, indem so etwas wie

public ActionResult([Bind(Prefix="p")]Product product) 

Sie tun Beachten Sie, dass MVC dies automatisch für Sie tun würde, wenn Sie Ihr Methodenargument p nennen würden.

Das Präfix kann sehr nützlich sein, wenn Sie versuchen, mehrere Entitäten gleichzeitig zu binden (z. B. zwei Namensfelder).

nutzen zu können, die auf bestimmte Eigenschaften ausschließen Bindung (dh verhindert, dass Menschen in productIds in einer geschmiedeten Form vorbei) nur die Eigenschaftsnamen gesetzt

public ActionResult([Bind(Prefix="p", Exclude="ProductId")]Product product) 

Dadurch wird sichergestellt, dass der ProductId auf Ihrer Einheit auszuschließen nie gesetzt wird .

Wenn Sie zwei völlig verschiedene Feldnamen binden möchten, z. Geben Sie ProductType ein, um eine benutzerdefinierte Modellbindung anzuzeigen oder das Feld selbst aus der FormCollection zu ziehen.

+1

Große Antwort. +1 - das hat mir geholfen. – Chev