2

私の _Layout.cshtml ページの head セクションには、次のコード行があります...

<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>

scripts ディレクトリを確認すると、jquery-ui は問題なくそこにあります。私はMVC、特にMVC4にかなり慣れていません。私は 3 を使用してきましたが、覚えていること、または少なくとも使用したことから、バンドルとは何の関係もないと思います。私が得たものから、これはすべてのスクリプトを、スペースなどを取り除いてしっかりとタイプされたテキスト形式にまとめます。したがって、Web フォームのマスター ページのような共有ページであるため、jquery-ui が各ページに追加されると想定しています。

これで、この共有レイアウト ページを使用する Index.cshtml ファイルが一番上に表示されます。

$(function () {
    $('#DateOfBirth').datepicker();
});

Index.cshtml ファイルにも、このコードを含む部分ビューを追加しました。

@Html.Partial("_SignUp", Model)

部分ビューには、追加しようとしているフィールドが含まれています。残念ながら、それは type=text の入力フィールドに日付ピッカーを追加していません。はい、このフィールドの id="#DateOfBirth" です。どうしたんだ?

編集:このエラーが発生します-「Uncaught TypeError: Object [object Object] has no method 'datepicker'」

4

2 に答える 2

4

私が見ているのは、javasciptコードを非表示にした場合です。

<script type="text/javascript">
$(function () {
    $('#StartDateTime').datepicker();
});
</script> 

下の_Layout.cshtmlに配置します

@Scripts.Render("~/bundles/jquery","~/bundles/jqueryui")
@RenderSection("scripts", required: false) 

行(jqUiバンドルを含める必要があることに注意してください)それはうまく機能します!!!

しかし、私はそれが私がそれを機能させたいように彼らが機能することを望んでいます。それで、スクリプトが完全にロードされる前に、ドキュメントレディが起動されますか?

更新:スクリプトを@sectionスクリプト{}で囲むだけで、ページの下部にあるjquery.jsファイルの下にレンダリングされます。

@section scripts {
<script type="text/javascript">
    $(function () {

        // Accordion
        $("#accordion").accordion({ header: "h3", active: 0, fillSpace: false });
        $("#bidTabs").tabs();
        $("#jobTabs").tabs();
        $("#settingsTabs").tabs(); 
    });
</script>
}
于 2012-06-28T12:29:52.353 に答える
4

コードに問題は見られず、問題を再現できません (ASP.NET MVC 4 Beta)。以下は私にとってはうまくいきます:

  1. インターネット テンプレートを使用して新しい ASP.NET MVC 4 プロジェクトを作成する
  2. ビュー モデルを追加します。

    public class MyViewModel
    {
        public DateTime DateOfBirth { get; set; }
    }
    
  3. ホームコントローラー:

    public class HomeController : Controller
    {
         public ActionResult Index()
         {
            return View(new MyViewModel
            {
                DateOfBirth = DateTime.Now
            });
        }
    }
    
  4. Index.cshtml:

    @model MyViewModel
    
    <script type="text/javascript">
    $(function () {
        $('#DateOfBirth').datepicker();
    });
    </script>
    
    @Html.Partial("_SignUp", Model)
    
  5. _SignUp.cshtml

    @model MyViewModel
    @Html.EditorFor(x => x.DateOfBirth)
    
  6. 結果:

ここに画像の説明を入力

では、質問は次のようになると思います。

于 2012-05-22T06:06:13.683 に答える