2016-08-05 7 views
2

mvc 4.0で部分ビュー "_Test1"を作成しました。私は私の部分図を呼び出していますコントローラの助けを借りて部分ビューからjavascriptをロードする方法

enter image description here

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

私は、私はすべてのエラーを取得しないデバッグする場合、私は私の部分図は、コントローラを介して正常にロードされていることを前提としています。今、この部分的なビューの助けを借りて、私はJavaScriptを呼び出さなければなりません。これは私にエラー"予期しない文字 '$'"を与えます。彼は下のスクリーンショットをご参照ください: -

enter image description here

誰かが助けることができますか?

+1

'$'は私がpressumed jqueryのためのものです。メインビューにjqueryライブラリを追加してください – Sherlock

+0

これはあなたを助けるかもしれません、http://stackoverflow.com/questions/885990/linking-javascript-libraries-in-user-controls/886184#886184 –

+0

私はリンクを共有してくれてありがとうSmit ..それは働いた.. – user3106445

答えて

0

私は間違いなくあなたが言及した理由のために部分的な部分の中に入れないことをお勧めします。あるビューが同じjsファイルへの参照を持っている2つの部分集合を引っ張る可能性が高くなります。また、残りの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、チャールズ

Psのを持っているでしょう。要求されたとして私の他の回答に要求されたとして、.JSBlock(a, b)の私の実装を: -

EDIT ASP.NET MVC場でORビルド時に&縮小化JSを連結:ここで私は縮小化やJSファイルを連結について尋ねられたフォローアップの質問です

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

しかし、このコードはここではまったく必要ありません。 –

関連する問題