c# - 创建一个返回 Razor @ 标签的辅助函数?

标签 c# asp.net asp.net-mvc-3 razor extension-methods

很难找到我的问题的答案,因为我不太确定 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/

相关文章:

c# - 如何在 "sub"表达式中使用 lambda 表达式参数?

c# - 影响相对文件路径的环境 PATH 变量

asp.net - 退出后返回箭头

c# - 来自同一张表的 3 个不同的不同值

html - 可滚动 div 内的卡住表格标题

c# - MVC模型是Poco类,结构有数据还是业务层?

c# - PreApplicationStartMethod 何时真正被触发运行?

c# - 仅在 safari 浏览器中,ASP.net MVC 中的 IFrame 中的 session 为空

c# - Entity Framework 添加自定义方法

c# - FormsAuthenticationTicket.expiration v web.config 值超时