@ Url.Content与外部js文件

时间:2016-02-22 13:00:14

标签: javascript jquery asp.net-mvc

我正在使用blueimp upload库。我在不同的javascript文件中上传了代码。我正在使用ASP.Net MVC。我想通过Url.Content("~")或其他东西(如果有的话)获取我的应用程序的根目录。我尝试了this amswer,但结果却给了我文字'@ Url.Content(“〜”)'。所以我想用html的data-*。现在我的文件上传看起来像

 <input type="file" name="files[]" data-root ='<%= @Url.Content("~/") %>' multiple/>

并上传代码

$('input:file', subscriber).fileupload({
                dataType: 'json',
                url: $(this).data('root')+'ControllerName/ActionName',
                done: function (e, data) {
                    if (!data || !data.result || !data.result.length) {
                        alert("Error occured when uploading the file");
                        return;
                    }

                    if (data.result[0].error) {
                        alert("Error occured. " + data.result[0].error);
                        return;
                    }

                    LoadHtmlInDiv('AssigneeDocList', '/Assignee/DocumentList');
                },
                fail: function (e, data) {
                    alert("Error occured when uploading the file");
                }
            });

但它正在提供Error 404因为新网址就像

/ProjectName/ControllerName/undefinedControllerName/ActionName

我试图在fail回调中检查相同的值,这是正确的。不知道为什么制作网址是错误的。

1 个答案:

答案 0 :(得分:1)

我假设您的<input/>标记位于表单中。如果是这样,您可以将空字符串作为url传递。 blueimp upload上传使用form的{​​{1}}方法网址作为基础,并将自己的网址部分附加到其中。这就是为什么你会得到这样的网址

action

在我自己的代码中,我声明了我的形式 -

/ProjectName/ControllerName/undefinedControllerName/ActionName

我的@using (Html.BeginForm("Upload", "Document", FormMethod.Post, new { enctype = "multipart/form-data" })) 标记就像 -

input

和javascript -

<input id="fileupload" type="file" name="file" />

我已删除了函数实现,但您可以理解。这个文件发布到

$('#fileupload').fileupload({
    url: '',
    dataType: 'json',
    add: function (e, data) {},
    done: function (e, data) {},
    progressall: function (e, data) {}
});