我正在尝试创建一个自定义HTML帮助器,我想知道如何在不将其作为参数传递的情况下访问Model对象。
由于
答案 0 :(得分:29)
如果您使用强类型视图,则应该:
public static MvcHtmlString MyHelper<TModel>(this HtmlHelper<TModel> htmlHelper)
{
TModel model = htmlHelper.ViewData.Model;
return MvcHtmlString.Empty;
}
如果您不使用强类型视图,则不应该:
public static MvcHtmlString MyHelper(this HtmlHelper htmlHelper)
{
object model = htmlHelper.ViewData.Model;
return MvcHtmlString.Empty;
}
答案 1 :(得分:-16)
HTML帮助程序是以编程方式生成HTML的不好方法。使用页面类文件中的代码和单独文件中的HTML标记,Web窗体要好得多。是HTML帮助程序将一些代码放在单独的类文件中,但是您正在从HTML页面调用代码。什么阻止您直接在视图页面中编写代码。 MVC支持你不必做的许多不良做法,但由于某些原因,Web Forms开发人员必须做坏事,因为它是允许的。如果您很好地学习Web窗体,您将使用面向对象的现代模式而不是像HTML帮助程序这样的过程逻辑来开发可维护和可伸缩的Web应用程序。