<分区>
尊敬的女士们先生们,
我是来自 Java 的 Razor 新手。我对帮助者的作用有点困惑。它们与定义做同样事情的 C# 类有何不同?您什么时候会使用助手来创建类和调用该类的方法?
也许,作为引用,可以使用 this example .
也许为了完成,在编写 Web 应用程序时,Helpers 和客户端 Javascript 如何结合在一起?看起来它们会重叠很多?
最好的,
乔治
<分区>
尊敬的女士们先生们,
我是来自 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# - 将遗留代码库从 VB 转换为 C# 是否有任何值(value)?
javascript - 为什么 Visual Studio 和 javascript 找不到 Html.EnumDropDownListFor 的 id?
asp.net-mvc - 在 MVC 中一起使用 Ajax.ActionLink 和 ChildActionOnly 失败
c# - 如何在代码隐藏中设置 DataGrid 行的背景颜色?
c# - 发布时从另一个 ASP.NET Core 2 项目引用 ASP.NET Core 2 项目失败