0

(iframe を使用せずに) ColorBox を介して Razor 部分ビューを読み込むと、JavaScript ライブラリが正しく初期化されないか、部分ビューのアーティファクトであると思われます。ライブラリを親ページに含めると、JavaScript 関数は部分的な jsut 内で正常に実行されます。ライブラリがパーシャルにある場合、ブラウザーからのエラーは表示されませんが、機能していません。ライブラリ (この場合fileuploader.jsは ) をパーシャルの外に移動し、関数をパーシャルに保持すると、正常に動作します。

例:

<script src="@Url.ContentArea("~/Scripts/plugins/ajaxUpload/fileuploader.js")" type="text/javascript"></script>

                   <div id="file-uploader">
                        <noscript>
                            <p>
                                Please enable JavaScript to use file uploader.</p>
                        </noscript>
                    </div>


<script>

 $(function () {
        var fileCount = 0;
        var uploader = new qq.FileUploader({
            element: document.getElementById('file-uploader'),
            action: '/Admin/Avatar/AvatarUpload',
            debug: true,
            params: {
                'userId': '@ViewBag.UserId'
            },
            onSubmit: function (id, fileName) {
                fileCount++;
            },
            onComplete: function (id, fileName, responseJson) {
                if (responseJson.success) {
                    if (createAvatar(responseJson.file, responseJson.imageId)) {
                        fileCount--;

                    } else {
                        fileCount--;

                    }
                } else {
                    $("span.qq-upload-file:contains(" + fileName + ")").text(responseJson.errorMessage);
                    fileCount--;
                }

                if (fileCount == 0) {
                 .....
                }

            },
            onCancel: function (id, fileName) {
                fileCount--;
                if (fileCount == 0) {
                    ....
                }
            }
        });
    });

<script>
4

2 に答える 2

0

使用しているJavaScriptライブラリへの参照が重複していないかどうかを確認することをお勧めします(1つは親に、もう1つは部分に)。

これは一般的な問題であり、エラーは発生しませんが、JavaScriptコードの実行は停止します。

于 2013-03-07T13:24:44.380 に答える
0

これはタイム ラインの問題だと思います。「部分ビュー」のロード (または div の追加) の前に、JavaScript はそれをバインドしようとして失敗します。そのため、部分ビュー ドキュメントにある要素を見つけることができません。これは「ColorBox」です。この問題の解決策を見つけました。たとえば、GETまたはPOSTメソッドを呼び出すと、クエリの後に次のようなコントロールポイントが配置されます。たとえば、「colorbox」をバインドする場合:

function getMyPartial(partialname) {
    var resultDiv = document.getElementById("content");
    $.ajax({
        type: "GET",
        url: partialname,                                                                                 
        async: false,
        success: function (data) {
            resultDiv.innerHTML = "";
            resultDiv.innerHTML = data.toString();
        }
    });    
    var indd = 0; //This is Control Point
    if (partialname == "YourPartialName") {
        var yourelementinpartial= document.getElementById("example");
        while (!yourelementinpartial) {
            indd++;
        }  
        $(".group4").colorbox({ rel: 'group4' }); //binding point
    }      
}

コントロール ポイントで、PartialView ドキ​​ュメント内のいずれかの要素が見つかった場合、それがバインドされます。

于 2013-08-07T01:01:38.310 に答える