2

嗨女士们先生们,

我是来自 Java 的 Razor 新手。我对助手的角色有点困惑。它们与定义做同样事情的 C# 类有何不同?你什么时候会使用帮助器来创建一个类并调用该类的方法?

也许,作为参考,可以使用这个例子

也许为了完成,在编写 Web 应用程序时,Helper 和客户端 Javascript 将如何结合在一起?看起来他们会重叠很多?

最好的,

乔治斯

4

2 回答 2

1

所以至少有两种方法可以定义助手。这是一种方法。

namespace MvcHelpers.Helpers
{
    public class ButtonHelper
    {
        public static MvcHtmlString SpecialButton(string id)
        {
          return new MvcHtmlString(String.Format("<input id=\"{0}\" type=\"button\" value=\"Special\"/>", id));
        }
    }
}

我认为这就是您在说“C# 类”时所指的内容,但实际上它们只是帮助器,也可以更轻松地输出将在您的视图中呈现的 HTML。

这是另一种设计助手的方法,这可能就是您所说的“助手”。

namespace MvcHelpers.Helpers
{
    public static class ButtonHelperExtension
    {
        public static MvcHtmlString SpecialButton(this HtmlHelper helper, string id)
        {
          return new MvcHtmlString(String.Format("<input id=\"{0}\" type=\"button\" value=\"Special\"/>", id));
        }
    }
}

这被称为帮助程序扩展,现在我们可以像所有其他标准 HTML 帮助程序一样引用它。下面是我们如何在 Razor 视图中引用这两种类型的助手。

@{
    ViewBag.Title = "Home";
}
@using MvcHelpers.Helpers;

<h2>Home Page</h2>

@ButtonHelper.SpecialButton("button1")
<br />
@Html.SpecialButton("button2")

两种技术都达到了完全相同的结果。引用为 Html.SpecialButton 的是扩展方法。我看到的唯一优点是很明显它是一个 HTML 帮助程序,而不是执行其他一些功能。熟悉使用 HTML 帮助程序的人现在在使用 InteliSense 时会看到您的新函数。但是他们仍然必须输入正确的使用条款才能显示出来。因此,语义略有不同的结果相同。

于 2012-11-21T20:10:45.197 回答
0

帮助程序可以帮助您创建 html 控件,例如文本框、按钮、链接等,这些控件将使您能够构建响应式 Web 应用程序。在 mvc 中,您有两种主要类型的助手:Html 助手和 Ajax 助手。要在 javascript 中使用帮助程序,您应该使用 Ajax 帮助程序。无论如何,您应该访问此链接并阅读 mvc 助手以及如何创建自定义助手。

创建 MVC 助手

学习 MVC 助手

于 2012-11-21T14:35:16.313 回答