助手与C#类?什么时候用

时间:2012-11-21 13:57:10

标签: c# javascript razor asp.net-webpages

嗨女士们,先生们,

我是来自Java的Razor的新手。关于帮助者的角色,我有点困惑。它们与定义执行相同操作的C#类有什么不同?你什么时候使用帮助器而不是创建一个类并调用该类的方法?

或许,作为参考,可以使用this example

也许为了完成,在编写Web应用程序时,Helpers和客户端Javascript如何组合在一起?好像他们会重叠很多?

最佳,

乔治

2 个答案:

答案 0 :(得分: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#Classes”时,这就是你所指的,但实际上它们只是帮助者,它可以更容易地输出将在你的View中呈现的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时看到您的新功能。但他们仍然必须提出适当的使用条款才能显示出来。所以语义略有不同的结果相同。

答案 1 :(得分:0)

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

Creating MVC Helpers

Learning MVC helpers