0

このチュートリアルでポップアップ連絡先ダイアログを実装しようとしています: http://www.matthidinger.com/archive/2011/02/22/Progressive-enhancement-tutorial-with-ASP-NET-MVC-3-および-jQuery.aspx

私は絶対に問題なく動作するソリューションの作業バージョンを持っています。

これを自分のソリューションに統合しようとしているときに、問題が発生しました。

スクリプト ディレクトリに contactdialog.js ファイルを作成しました。

    /// <reference path="jquery-1.6.2.min.js"/>
/// <reference path="jquery-ui-1.8.11.js"/>
$.ajaxSetup({ cache: false });

$(document).ready(function () {
    $(".openDialog").live("click", function (e) {
        e.preventDefault();

        $("</div>")
        .addClass("dialog")
        .attr("id", $(this)
        .attr("data-dialog-id"))
        .appendTo("body")
        .dialog({
            title: $(this).attr("data-dialog-title"),
            close: function () { $(this).remove() },
            modal: true
        })
        .load(this.href);
    });

    $(".close").live("click", function (e) {
        e.preventDefault();
        $(this).closest(".dialog").dialog("close");
    });
});

それから私の見解では、私はトップの近くにいます:

<script src="~/Scripts/jquery-1.6.2.min.js" type="text/javascript"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.js" type="text/javascript"></script>
<script src="~/Scripts/jquery-ui-1.8.11.js" type="text/javascript"></script>
<script src="~/Scripts/contactdialog.js" type="text/javascript"></script>

そしてさらに下:

@Html.ActionLink("Contact Us", "ContactUs", "Home", null, new { @class = "openDialog", data_dialog_id = "emailDialog", data_dialog_title = "Contact Us"})

これで、リンクが正常に JavaScript 関数に入り、クラスの追加が正常に行われたように見えます。ただし、.dialog 関数に到達すると、「オブジェクトはプロパティまたはメソッド ダイアログをサポートしていません」という例外がスローされます。

jquery-UI がロードされていないことを示しているようです。
しかし、なぜ私は理解できませんか?Chrome でページを読み込んでページ ソースを確認すると、jquery-ui-1.8.11.js へのリンクが正常に開きます。

4

2 に答える 2

1

いくつかのヒント:

jqueryUI は別の部分ビューによって読み込まれていますが (開発者ツールに読み込まれるのはそのためです)、.dialog を呼び出す JS は別の部分ビューでレンダリングされていますか?

マスター/レイアウト ビューに jqueryUI を配置してみてください。

于 2012-09-04T18:28:12.447 に答える
1

バンドルを使用するように変更しました:

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

現時点では完全に私を超えた理由で、これが実現し、ダイアログが表示されています。

于 2012-09-05T10:05:07.457 に答える