在自定义Html帮助器中访问Model对象

时间:2010-11-15 16:12:18

标签: asp.net-mvc

我正在尝试创建一个自定义HTML帮助器,我想知道如何在不将其作为参数传递的情况下访问Model对象。

由于

2 个答案:

答案 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应用程序。