0

これは私を夢中にさせています。私は JQuery 初心者で、これを使用するのは初めてです。jQuery-ui Web サイトの例に従いましたが、スクリプト フラグメントでエラーが発生します。

オンライン$("#tabs").tabs(); エラー: 0x800a01b6 - Microsoft JScript ランタイム エラー: オブジェクトはプロパティまたはメソッド 'タブ' をサポートしていません

だから、これが私がやっていることです。ASP.NET MVC4 Web アプリを開発しています。jQuery スクリプトとスタイルはサイトの既定のバンドルに含まれており、次のように _Layout.cshtml の「マスター ページ」にレンダリングされます。

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>@ViewBag.Title - My ASP.NET MVC Application</title>
        <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <meta name="viewport" content="width=device-width" />
        @Styles.Render("~/Content/css")
        @Styles.Render("~/Content/themes/base/css")
        @Scripts.Render("~/bundles/modernizr")
        @Scripts.Render("~/bundles/jquery")
        @Scripts.Render("~/bundles/jqueryui")
    </head>

これが私の見解です:

@using Tigra.eStore.BusinessLogic.DomainObjects
@model Tigra.eStore.Storefront.Models.ProductDetailsViewModel

@{
    ViewBag.Title = "Details";
}

<h2>Details</h2>

<fieldset>
    <legend>@Model.Product.Name</legend>
    <div class="display-field">
        @Html.DisplayFor(model => model.Product.Name)
    </div>
</fieldset>
<p>
    @Html.ActionLink("Add to Cart", "Add", "ShoppingCart", new {id = Model.Product.Id}, new {})
    @Html.ActionLink("Back to List", "Index")
</p>

<script>
    $(function() {
        $("#tabs").tabs();
    });
</script>

<div class="descriptors">
    <div id="tabs">
        <ul>
            @foreach (ProductDescriptor descriptor in Model.Product.ProductDescriptors)
            {
                <li><a href="#tabs-@descriptor.SequenceNumber">@descriptor.Title</a></li>
            }
        </ul>
        @foreach (ProductDescriptor descriptor in Model.Product.ProductDescriptors)
        {
            <div id="tabs-@descriptor.SequenceNumber">
                <p>@descriptor.Description</p>
            </div>
        }
    </div>
</div>

実行時に次のように表示されるため、jQuery-ui がロードされていることは確かです。 Visual Studio に読み込まれたスクリプトが表示される

それは単純なものでなければなりません - これがあまりにも明白である場合は申し訳ありませんが、私が言ったように、私はこのようなことに慣れていません. 私が間違っていることがわかりますか?

4

2 に答える 2

4

解決しました!.

手がかりは画面の切り取りにあります。jquery-1.7.1 が 2 回読み込まれていることがわかります。Microsoft テンプレート プロジェクトは、jquery バンドルを _Layout.cshtml ページの下部にレンダリングします。なんで?わかりませんが、見落としていました。そこで、jquery-ui と一緒にページの上部に追加しました。jquery の 2 回目のレンダリングで jquery-ui が消去されるようです。

したがって、私の修正は@Scripts.Render("~/bundles/jquery")、ファイルの下部近くから行を削除し、私のものを上部に残すことです。魅力のように機能します。

なぜMicrosoftはそれを一番下に置いたのだろうか?何か案は?

于 2012-09-16T08:05:16.143 に答える
0

これは、パフォーマンスを考慮して行われています。位置を変えるのではなく

@Scripts.Render("~/bundles/jquery") 

以下の手順に従ってください。

@Scripts の後のレイアウト ページで、次を追加します。

@RenderSection("scripts", false)

次に、あなたの見解では

@section scripts{
 <script type="text/javascript>
 // view scriptt goes here
 </script> 
}

このセクションは、ビュー html の前後に配置できますが、レンダリングは常に後で行われます。

于 2013-08-23T15:46:41.820 に答える