【问题标题】:Helpers vs. C# Classes? When to use what [closed]助手与 C# 类?什么时候使用什么[关闭]
【发布时间】:2012-11-21 13:57:09
【问题描述】:

女士们,先生们,

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

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

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

最好的,

乔治

【问题讨论】:

  • 诶?您的示例中的 MyCustomHelpers IS 是一个静态 C# 类,其方法为 TwitterSearch(string value)... 使用此助手与客户端 JS 的区别在于助手在服务器端进行处理,而 client-side JS 会做它... client-side :)

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


【解决方案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 时会看到您的新函数。但是他们仍然必须输入正确的使用条款才能显示出来。所以语义略有不同的结果相同。

【讨论】:

    【解决方案2】:

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

    Creating MVC Helpers

    Learning MVC helpers

    【讨论】:

    • 仍然不确定我是否理解高级概念...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2012-09-19
    • 1970-01-01
    • 2022-01-02
    • 2017-09-11
    • 1970-01-01
    相关资源
    最近更新 更多