是否有一种内置的跟踪方法是否已经加载了捆绑包?我有几个编辑视图,例如需要jquery和jquery.Validate等库。我不需要在主布局页面上引用它。 由于页面可能包含几个不同的条件库...理想情况下,我希望@ scripts.Render知道我是否已经引用了一个库并阻止它重新加载。
干杯 添
答案 0 :(得分:6)
user108正在为您的问题提供可能的解决方案。他/她说,在您的布局中,您可以创建一个可选的“脚本”部分。然后,在需要jquery验证代码的视图中,您可以将其包含在布局的“脚本”部分中。这将完成您正在寻找的大部分内容。唯一不起作用的地方是,如果在同一页面上有多个视图部分,则都需要jquery验证码。
您可以相当轻松地自行实施解决方案。这是a SO post that will get you started。
答案 1 :(得分:5)
听起来你要求的东西更像是资产管理,你可以不止一次注册脚本,并且有一个API可以自动进行重复数据删除并呈现相应的列表。这是我们的待办事项列表,但它目前还不是API的一部分。
如果这是您想要的,您可以在我们的codeplex网站上投票: This issue
答案 2 :(得分:2)
试试这个:
public static MvcHtmlString RequireClientScript(this HtmlHelper helper, string scriptPath)
{
var scripts = helper.ViewContext.HttpContext.Items["client-script-list"] as Dictionary<string, string> ?? new Dictionary<string, string>();
if (!scripts.ContainsKey(scriptPath))
{
var sb = new StringBuilder();
var scriptTag = new TagBuilder("script");
scriptTag.Attributes.Add("type", "text/javascript");
scriptTag.Attributes.Add("src", scriptPath);
sb.AppendLine(scriptTag.ToString());
scripts.Add(scriptPath, scriptPath);
helper.ViewContext.HttpContext.Items["client-script-list"] = scripts;
return new MvcHtmlString(sb.ToString());
}
return MvcHtmlString.Empty;
}
答案 3 :(得分:-1)
如果您使用的是局部视图,则需要参考脚本库
页面顶部的仅添加所需的脚本添加,如
@Scripts.Render("~/bundles/jquery")
然后身体标签底部添加
@RenderSection("scripts", required: false)
任何其他页面扩展脚本部分,如
@section scripts{
<script src="/Scripts/jquery.validation.js" type="text/javascript"></script>
}