2012-03-26 6 views
6

In ASP.NET MVC3 versuche ich, die CSS-Klasse, die die Validierungsfehler Helper-Methode setzt. (Nicht this question, die angenommene Antwort nur ADDS die Klasse, ich möchte es vollständig überschreiben.) Beim Betrachten der MVC3-Quelle habe ich die ValidationInputCssClassName Eigenschaft auf der HtmlHelper-Klasse gefunden. Es ist einstellbar und speichert den Wert in einem Speicheranbieter, falls festgelegt. Die get-Methode für die Eigenschaft gibt [den Provider-Wert] ?? [der Standardklassenname] zurück.HtmlHelper-Klasse in System.Web.Webpages.Html vs System.Web.Mvc Namespaces

Jetzt, wenn Sie nur HtmlHelper.ValidationInputCssClassName (MSDN entry) in Ihrem Controller-Code eingeben, werden Sie sehen, dass es ein statisches Readonly-Feld ist. Der Grund dafür ist, dass es zwei HtmlHelper-Klassen gibt, eine im Namespace System.Web.Mvc und die andere im Namespace System.Web.Webpages.Html. Die Eigenschaft System.Web.Webpages.Html.HtmlHelper.ValidationInputCssClassName (MSDN entry) kann eingestellt werden, aber es scheint keinen Effekt auf den generierten Code zu haben, egal wo ich ihn eingerichtet habe.

Was fehlt mir? Und was ist der Unterschied zwischen diesen Klassen?

Antwort

3

Ich bin nicht positiv, aber ich denke System.Web.WebPages.Html ist für die Verwendung von ASP.net WebForms mit Razor.

Da ValidationInputCssClassName usw. alle schreibgeschützten Felder sind, denke ich, dass die einzige Möglichkeit, die Sie umgehen werden, darin besteht, Ihre eigenen HtmlHelper-Erweiterungsmethoden zu erstellen, damit Sie dieses Verhalten anpassen können.

Von MSDN:

Der System.Web.WebPages Namespace enthält Klassen Kern, verwendet werden, zu machen und führen Seiten, die mithilfe von ASP.NET-Webseiten mit der Razor-Syntax.

+0

Ich benutze Razor. Die HtmlHelper-Eigenschaft im Web.WebPages-Namespace ist eindeutig dazu bestimmt, von etwas geändert zu werden. Roll-your-own ist ein letzter Ausweg, ich möchte keine Updates mit jeder MVC-Version portieren! – Paul

+0

@Paul Ich spreche über WebForms mit Razor. Es ist nur eine Vermutung, aber so klingt es, als würde es verwendet werden. ASP.net WebForms Razor-Seiten. – Dismissile

3

Wenn Sie die Namensraumbeschreibung betrachten, scheint es, dass eine davon für Razor entwickelt wurde und für die Verwendung mit WebMatrix vorgesehen ist.

Referenz: http://msdn.microsoft.com/en-us/library/gg549171(v=vs.99).aspx

auch:

Der System.Web.Mvc Namespace enthält Klassen, die HTML-Elemente verwendet werden, zu erstellen.

Die Typen in diesem Namespace befinden sich in der System.Web.WebPages-Assembly und sind mit den entsprechenden Typen in der System.Web.Mvc-Assembly identisch.

Referenz: http://msdn.microsoft.com/en-us/library/system.web.mvc(v=vs.99).aspx