我在mvc 4.0中创建了一个局部视图“_Test1”。如何从局部视图加载javascript
与控制器我打电话给我的局部视图的帮助。
private ActionResult MyView()
{
return PartialView("_Test1");
}
当我调试我没有得到任何错误,我认为我的部分观点已通过控制器成功加载。现在借助这个局部视图,我必须调用一个javascript。这给我一个错误“意想不到的字符'$'”。请参考下面他截图: -
有人能帮忙吗?
我在mvc 4.0中创建了一个局部视图“_Test1”。如何从局部视图加载javascript
与控制器我打电话给我的局部视图的帮助。
private ActionResult MyView()
{
return PartialView("_Test1");
}
当我调试我没有得到任何错误,我认为我的部分观点已通过控制器成功加载。现在借助这个局部视图,我必须调用一个javascript。这给我一个错误“意想不到的字符'$'”。请参考下面他截图: -
有人能帮忙吗?
我肯定会建议不要把它们放在partials中,这正是你提到的原因。一个视图很有可能牵扯到两个部分,这两个部分都引用了同一个js文件。在加载其余的html之前,您还有加载js的性能问题。
我不知道最佳做法,但我选择在主页面内包含任何常见的js文件,然后为某些特定或少量视图特定的其他js文件定义单独的ContentPlaceHolder。
下面是一个示例母版页 - 这是非常自我解释。
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
<head runat="server">
... BLAH ...
<asp:ContentPlaceHolder ID="AdditionalHead" runat="server" />
... BLAH ...
<%= Html.CSSBlock("/styles/site.css") %>
<%= Html.CSSBlock("/styles/ie6.css", 6) %>
<%= Html.CSSBlock("/styles/ie7.css", 7) %>
<asp:ContentPlaceHolder ID="AdditionalCSS" runat="server" />
</head>
<body>
... BLAH ...
<%= Html.JSBlock("/scripts/jquery-1.3.2.js", "/scripts/jquery-1.3.2.min.js") %>
<%= Html.JSBlock("/scripts/global.js", "/scripts/global.min.js") %>
<asp:ContentPlaceHolder ID="AdditionalJS" runat="server" />
</body>
Html.CSSBlock
& Html.JSBlock
显然是我自己的扩展,但同样,他们是自我解释在他们做什么。
然后在说SignUp.aspx
观点我会
<asp:Content ID="signUpContent" ContentPlaceHolderID="AdditionalJS" runat="server">
<%= Html.JSBlock("/scripts/pages/account.signup.js", "/scripts/pages/account.signup.min.js") %>
</asp:Content>
HTHS,查尔斯
诗篇。这是一个后续的问题,我问了一下涅槃和串联js文件:在飞行中或在生成时串联&缩减大小JS - ASP.NET MVC
编辑:由于我的其他答案的要求,我实现.JSBlock(a, b)
的要求
public static MvcHtmlString JSBlock(this HtmlHelper html, string fileName)
{
return html.JSBlock(fileName, string.Empty);
}
public static MvcHtmlString JSBlock(this HtmlHelper html, string fileName, string releaseFileName)
{
if (string.IsNullOrEmpty(fileName))
throw new ArgumentNullException("fileName");
string jsTag = string.Format("<script type=\"text/javascript\" src=\"{0}\"></script>",
html.MEDebugReleaseString(fileName, releaseFileName));
return MvcHtmlString.Create(jsTag);
}
然后当奇迹发生......
public static MvcHtmlString MEDebugReleaseString(this HtmlHelper html, string debugString, string releaseString)
{
string toReturn = debugString;
#if DEBUG
#else
if (!string.IsNullOrEmpty(releaseString))
toReturn = releaseString;
#endif
return MvcHtmlString.Create(toReturn);
}
不要直接复制 - http://stackoverflow.com/questions/885990/linking-javascript-libraries-in-user-controls/886184#886184而是你可以把链接的答案评论 –
编写链接可能不会直接帮助其他观众 – Lakhtey
但是这段代码在这里完全没有必要,它有帮助吗? –
'$'是jQuery的我pressumed。请在您的主视图中添加jQuery库 – Sherlock
这可能会帮助你,http://stackoverflow.com/questions/885990/linking-javascript-libraries-in-user-controls/886184#886184 –
谢谢Smit分享我的链接..它的工作.. – user3106445