2010-11-15 8 views

Antwort

30

Wenn Sie stark typisierte Ansichten verwendet werden, die Sie sollten:

public static MvcHtmlString MyHelper<TModel>(this HtmlHelper<TModel> htmlHelper) 
{ 
    TModel model = htmlHelper.ViewData.Model; 
    return MvcHtmlString.Empty; 
} 

Wenn Sie nicht stark typisierte Ansichten verwenden, die Sie sollten nicht:

public static MvcHtmlString MyHelper(this HtmlHelper htmlHelper) 
{ 
    object model = htmlHelper.ViewData.Model; 
    return MvcHtmlString.Empty; 
} 
+0

@Darin Wenn Sie einen Helper für ein bestimmtes Modell stark typisiert haben möchten, würden Sie etwas tun, wie 'public static MvcHtmlString FooBarFor (dieser HtmlHelper htmlHelper)'? – AaronLS

+0

@AaronLS, ja, genau. –

-16

HTML Helfer sind eine schlechte Möglichkeit, HTML programmgesteuert zu generieren. Web Forms ist viel besser mit Code in einer Seitenklassendatei und HTML-Markup in einer separaten Datei. Ja, HTML-Helfer fügen Code in separate Klassendateien ein, aber Sie rufen Code von Ihrer HTML-Seite auf. Was Sie davon abhält, Code direkt in Ihrer Ansichtsseite zu schreiben. MVC unterstützt viele schlechte Praktiken, die Sie nicht tun müssen, aber aus irgendeinem Grund müssen Entwickler in Web Forms schlechte Praktiken anwenden, weil dies erlaubt ist. Wenn Sie Web Forms gut lernen, werden Sie wartbare und skalierbare Webanwendungen entwickeln, die moderne objektorientierte Muster anstelle von prozeduraler Logik wie HTML-Helfern verwenden.

+0

Ich bin kein Fan von irgendeinem Markup, das auch in einer Klassendatei geschrieben wird. Ich vermeide so viele Helfer wie möglich. Obwohl MVC hat sicherlich seine Probleme (daher eine gewisse Menge an Push in Richtung MVVM), Web Forms war von Natur aus gebrochen, es war mit so vielen schmerzhaften Kompromisse geschnürt. – AsciiSmoke

Verwandte Themen