gpt4 book ai didi

asp.net-mvc - 我的 Razor 文件中的内联 javascript - 我可以从外部文件获取此 "included"

转载 作者:行者123 更新时间:2023-12-02 11:11:49 25 4
gpt4 key购买 nike

我的 JavaScript block 很小。我希望这些相同的 block 内联显示在我的代码中,但不想在每个文件中重复它们。有没有一种方法可以将不涉及的代码“包含”到 Razor 文件中

<script src="@Url.Content("~/Scripts/small_script_block1.js")" type="text/javascript"></script>

谢谢

最佳答案

另一种可能需要我多花几分钟来写:

为 HtmlHelper 创建扩展方法。在您的 cshtml 文件中,它看起来像这样:

@Html.InlineScriptBlock("~/scripts/small_script_block1.js")

如果您愿意,我可以向您发送实现,但这个想法可能就是您所需要的。如果没有,请添加评论,我会写下来。

编辑下面的代码(不漂亮并且没有暗示或给出保证:)

public static class HtmlHelperExtensions
{
public static MvcHtmlString InlineScriptBlock<TModel>(this HtmlHelper<TModel> htmlHelper, string path)
{
var builder = new TagBuilder("script");
builder.Attributes.Add("type", "text/javascript");

var physicalPath = htmlHelper.ViewContext.RequestContext.HttpContext.Server.MapPath(path);
if (File.Exists(physicalPath))
{
builder.InnerHtml = File.ReadAllText(physicalPath);
}

return MvcHtmlString.Create(builder.ToString());
}
}

请记住,如果将其放入项目中,则需要使命名空间对 View 可见。与 ASP.NET WebForms 不同,您可以在顶部提供标记,Razor 要求您在 Views 文件夹中的 Web.config 文件中执行此操作。

<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="Your.Namespace.Here.Extensions" />
</namespaces>
</pages>

关于asp.net-mvc - 我的 Razor 文件中的内联 javascript - 我可以从外部文件获取此 "included",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5925679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com