Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 通过ColorBox调用partial时加载JavaScript?_Asp.net Mvc 3_Razor_Colorbox - Fatal编程技术网

Asp.net mvc 3 通过ColorBox调用partial时加载JavaScript?

Asp.net mvc 3 通过ColorBox调用partial时加载JavaScript?,asp.net-mvc-3,razor,colorbox,Asp.net Mvc 3,Razor,Colorbox,当通过ColorBox加载Razor部分视图时(不使用iframe),JavaScript库没有正确初始化,或者它是部分视图的一个工件。如果在父页面中包含库,JavaScript函数将在部分jsut中运行。当库位于分部时,我看不到来自浏览器的任何错误,但它不工作。如果我将库(在本例中是fileuploader.js)移到分部之外,并将函数保留在分部中,则它可以正常工作 例如: <script src="@Url.ContentArea("~/Scripts/plugins/ajaxUplo

当通过ColorBox加载Razor部分视图时(不使用iframe),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>


请启用JavaScript以使用文件上载程序

$(函数(){ var fileCount=0; var uploader=new qq.FileUploader({ 元素:document.getElementById('file-uploader'), 操作:'/Admin/Avatar/AvatarUpload', 是的, 参数:{ “userId”:“@ViewBag.userId” }, onSubmit:函数(id、文件名){ fileCount++; }, onComplete:函数(id、文件名、responseJson){ if(responseJson.success){ if(createAvatar(responseJson.file,responseJson.imageId)){ 文件计数--; }否则{ 文件计数--; } }否则{ $(“span.qq上传文件:包含(“+fileName+”)).text(responseJson.errorMessage); 文件计数--; } if(fileCount==0){ ..... } }, onCancel:函数(id、文件名){ 文件计数--; if(fileCount==0){ .... } } }); });
您可能需要检查是否存在对正在使用的JavaScript库的重复引用(一个在父库中,一个在部分库中)


这是一个常见问题,它不会引发任何错误,但会阻止JavaScript代码的执行。

我认为这是一个时间线问题。在加载“部分视图”之前(或附加div)JavaScript试图绑定它,但失败了。因此它找不到部分视图文档中的元素。我在“ColorBox”中遇到了类似的问题。我找到了解决此问题的方法。例如:当调用GET或POST方法时,在查询后放置一个类似的控制点。例如绑定“ColorBox”:


在控制点,如果PartialView文档中的任何元素发现它将绑定。

这是404错误吗?你真的在跑进一个区域吗?我之所以这样说是因为
@Url.ContentArea
,如果您尝试使用
@Url.Content
,会发生什么?
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
    }      
}