gpt4 book ai didi

asp.net-mvc - 在自定义编辑器中仅包含一次脚本

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

因此,我尝试创建一个自定义编辑器,以便对于“Duration”的 DataType ,文本框显示为 HH:MM:SS 的屏蔽格式。

到目前为止我已经创建了一段非常简单的代码

@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line", type = "duration" })

<script>
$(document).ready(function () {
$("#@Html.NameFor(c => c)").mask("00:00:00");
});
</script>

这位于我的 ~/Views/Shared/EditorTemplates/Duration.cshtml 文件中。但是,它需要加载额外的 JavaScript (maskedInput.js)。

是否有我可以在此处使用的任何 razor include,以便我可以在页面加载中包含一次且仅一次 maskedInput.js 文件。我意识到我可以将其添加到编辑器所在的父页面(但这需要知道使用该编辑器的每个页面)。我可以将其添加到主布局 View 中,但这意味着不使用此编辑器的页面的开销。

所以我想总而言之,我要问的是:-“有没有办法从 EditorTemplate 中一次且仅包含一次 javascript 文件”。

最佳答案

我写了一个 nuget package 正是出于这个目的,写了一篇博客文章 YD1m已提及。

要使用该包,您需要做的第一件事是在布局中的某个位置添加对 Html.RenderScripts() 的调用,以便在期间使用帮助器添加的所有脚本文件引用和 block Razor View 的渲染在响应中输出。放置此调用的典型位置是在顶级布局中的核心脚本之后。这是一个布局示例:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>@ViewBag.Title</title>
<meta name="viewport" content="width=device-width">
</head>
<body>
@RenderBody()
<script src="~/Scripts/jquery-2.0.2.js"></script>
@* Call just after the core scripts in the top level layout *@
@Html.RenderScripts()
</body>
</html>

如果您使用的是 Microsoft ASP.NET Web Optimization 框架,则可以使用 Html.RenderScripts() 的重载来使用 Scripts.Render()方法作为生成脚本的函数:

@Html.RenderScripts(Scripts.Render)

完成后,现在您需要在编辑器模板中执行的操作就是使用 nuget 包中的帮助程序添加对脚本的引用并添加代码块

@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line", type = "duration" })

@using (Html.BeginScriptContext())
{
Html.AddScriptFile("~/Scripts/maskedInput.js");
Html.AddScriptBlock(
@<script>
$(document).ready(function () {
$("#@Html.NameFor(c => c)").mask("00:00:00");
});
</script>);
}

引用的脚本文件只会添加到页面一次,所有脚本 block 将在 Html.RenderScripts() 调用结束时写出。

使用帮助程序,您可以在 View 、部分 View 和编辑器/显示模板中添加脚本文件和脚本 block 。请注意,当前版本 (1.1.0.0) 在通过 AJAX 调用时不会使用帮助程序渲染脚本,但这是我希望在下一版本中添加的内容。

关于asp.net-mvc - 在自定义编辑器中仅包含一次脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17365464/

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