2016-08-05 132 views
2

我在mvc 4.0中创建了一个局部视图“_Test1”。如何从局部视图加载javascript

enter image description here

与控制器我打电话给我的局部视图的帮助。

private ActionResult MyView() 
{ 
    return PartialView("_Test1"); 
} 

当我调试我没有得到任何错误,我认为我的部分观点已通过控制器成功加载。现在借助这个局部视图,我必须调用一个javascript。这给我一个错误“意想不到的字符'$'”。请参考下面他截图: -

enter image description here

有人能帮忙吗?

+1

'$'是jQuery的我pressumed。请在您的主视图中添加jQuery库 – Sherlock

+0

这可能会帮助你,http://stackoverflow.com/questions/885990/linking-javascript-libraries-in-user-controls/886184#886184 –

+0

谢谢Smit分享我的链接..它的工作.. – user3106445

回答

0

我肯定会建议不要把它们放在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); 
    } 
+3

不要直接复制 - http://stackoverflow.com/questions/885990/linking-javascript-libraries-in-user-controls/886184#886184而是你可以把链接的答案评论 –

+0

编写链接可能不会直接帮助其他观众 – Lakhtey

+1

但是这段代码在这里完全没有必要,它有帮助吗? –