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

标签 c# javascript razor asp.net-webpages

<分区>

尊敬的女士们先生们,

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

也许,作为引用,可以使用 this example .

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

最好的,

乔治

最佳答案

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

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# 类”时所指的内容,但实际上它们只是帮助程序,还可以更轻松地输出将在您的 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 View 中引用这两种类型的助手。

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

<h2>Home Page</h2>

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

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

关于c# - 助手与 C# 类?什么时候用什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13494854/

相关文章:

c# - 加载 x86 或 x64 程序集

c# - 将遗留代码库从 VB 转换为 C# 是否有任何值(value)?

javascript - 为什么 Visual Studio 和 javascript 找不到 Html.EnumDropDownListFor 的 id?

asp.net-mvc - 在 MVC 中一起使用 Ajax.ActionLink 和 ChildActionOnly 失败

css - 背景图片只出现在起始页,而不会出现在其他页面

c# - 如何在代码隐藏中设置 DataGrid 行的背景颜色?

c# - 发布时从另一个 ASP.NET Core 2 项目引用 ASP.NET Core 2 项目失败

javascript - jQuery 获取 URL 的最后一部分

javascript - react 文本之间的跨度空间

javascript - 将 base64 字符串转换为 ArrayBuffer