Richtige Art der Verwendung von FormCollection in ASP.NET MVC2 Create-Methode?

8

Ich entwickle gerade eine Anwendung mit dem neuen ASP.NET MVC2-Framework. Ursprünglich habe ich angefangen, diese Anwendung in der ASP.NET MVC1 zu schreiben und ich aktualisiere sie im Grunde nur auf MVC2.

Mein Problem hier ist, dass ich das Konzept des FormCollection-Objekts im Gegensatz zum alten typisierten Objekt nicht wirklich verstehe.

Dies ist mein aktueller Code:

%Vor%

Dies ist der Code aus der MVC1-Anwendung:

%Vor%

Welche Vorteile bietet der Wechsel zu FormCollection in MVC2 und noch wichtiger - wie wird es richtig verwendet?

    
Faizan S. 28.01.2010, 15:59
quelle

2 Antworten

11

Sie hatten das FormCollection-Objekt auch in v1. Es ist jedoch bevorzugter, ein typisiertes Objekt zu verwenden. Also, wenn du das schon machst, mach das weiter.

    
Mattias Jakobsson 28.01.2010, 16:06
quelle
0

Wenn Sie FormCollection verwenden, schließen Sie Ihre Postdaten oder Abfragezeichenfolgenschlüssel / Werte manuell in Werten ab, die in Ihrem Code mithilfe der String-Typisierung verwendet werden (was zu String-typisiertem Code führt), wenn stattdessen die integrierte Model-Bindung verwendet werden kann Dies ist für Sie, wenn Sie Formularmodelle, auch "typisierte Objekte" genannt, verwenden.

Ich denke, durch die Verwendung der FormCollection würden Sie wahrscheinlich auch die Fähigkeit verlieren, die handlichen Datenanmerkungsattribute (Slash Validation) auf Ihren Modellobjekten zu verwenden, die für die Verwendung mit der typisierten Objektmodellbindung ausgelegt sind.

Darüber hinaus kann der Komponententest sehr viel umständlicher werden, sobald Sie Ihren Controller berühren. Request.Form. Sie werden möglicherweise feststellen müssen, dass Sie eine HttpContextBase und eine HttpRequestBase nachahmen und einrichten müssen, damit die .Form-Eigenschaft dieser Scheinanforderung die NameValueCollection zurückgibt, die Ihr Test sehen soll. Vergleichen Sie dies damit, dass Modellbindung die Arbeit für Sie erledigt, zum Beispiel:

%Vor%

Zusammenfassend würde ich empfehlen, FormCollection maximal zu verwenden.

    
user74754 12.01.2012 20:30
quelle