很难找到我的问题的答案,因为我不太确定 Razor 标签的“类型”是什么。
本质上我想创建一个助手来执行以下操作:
public static xxxxxxx ScriptTag(this HtmlHelper htmlHelper, string url)
{
return @<script type="text/javascript" src="@Url.Content("~/" + url)" />;
}
我想要这个的原因是我正在实现this post中概述的扩展方法。 .
基本上而不是必须做:
@Html.Resource(@<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>, "js")`
我希望能够做到:
@Html.Resource(Html.ScriptTag("Scripts/jquery-1.4.4.min.js"), "js");
我是否超越了这里的星星,或者这是可能的吗?
克里斯
最佳答案
我不太明白 ScriptTag
帮助程序 (js
) 中第二个参数的用法。该帮助程序称为 ScriptTag,因此很明显它将呈现一个脚本。另外,当您可以直接拥有时,为什么还需要这两个嵌套助手:
@Html.Resource("Scripts/jquery-1.4.4.min.js", "js")
但无论如何,如果您需要这样的语法,您可以使用 Razor Templated Delegates :
public static class HtmlExtensions
{
public static HelperResult ScriptTag(this HtmlHelper htmlHelper, string url, string type)
{
var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
var script = new TagBuilder("script");
script.Attributes["type"] = "text/javascript";
script.Attributes["src"] = urlHelper.Content("~/" + url);
return new HelperResult(writer =>
{
writer.Write(script.ToString(TagRenderMode.Normal));
});
}
public static IHtmlString Resource(this HtmlHelper htmlHelper, HelperResult renderer)
{
return renderer;
}
}
我们可以看到,在这种情况下,Resource
扩展方法并没有带来太多值(value)。
关于c# - 创建一个返回 Razor @ 标签的辅助函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9307814/