我用razor创建了MVC3应用程序并使用jquery(初学者级别)并且它工作正常。 之后我在IIS上托管了这个应用程序(创建了 MVCDemo 虚拟目录)并且它工作正常,除非我使用jquery 进行发布请求。
使用jquery
考虑以下请求$.ajax({
type: "POST",
data: { 'username': $("#UserName").val() },
async: false,
url: "/Wizard/ValidateUserName",
success: function (data) {
if (data) {
$('#divUser').html("Username is available");
$('#divUser').removeClass("field-validation-error");
}
else {
$('#divUser').html("Username is not available");
$('#divUser').removeClass("field-validation-valid");
$('#divUser').addClass("field-validation-error");
}
datavalue = data;
},
error: function (xhr, ajaxoptions, throwError) {
alert(xhr.responseText);
}
});
如果我要更改 URL:MVCdemo / Wizard / ValidateUserName ,那么这将正常工作,否则会出现 404 的错误。
那么如何在MVC3应用程序中全局处理这种类型的路由呢?
答案 0 :(得分:2)
你需要在jQuery函数中使用MVC razor语法。
如下所示........
function checkUserAvailbility() {
var datavalue = false;
$.ajax({
type: "POST",
data: { 'username': $("#UserName").val() },
async: false,
url: '@Url.Action("ValidateUserName", "Wizard")',
success: function (data) {
if (data) {
$('#divUser').html("Username is available");
$('#divUser').removeClass("field-validation-error");
}
else {
$('#divUser').html("Username is not available");
$('#divUser').removeClass("field-validation-valid");
$('#divUser').addClass("field-validation-error");
}
datavalue = data;
},
error: function (xhr, ajaxoptions, throwError) {
alert(xhr.responseText);
}
});
return datavalue;
}
查看jQuery的url :(属性)之间的差异。
答案 1 :(得分:0)
Jquery将转到实际网址。如果您只在浏览器中放置/ Wizard / ValidateUserName,它也将无效。
解决问题的简单方法是将iis配置为以您期望的相同方式工作,因此您无需为虚拟目录添加“MVCDemo”前缀。
答案 2 :(得分:0)
这也应该有效:
function checkUserAvailbility() {
var datavalue = false;
$.ajax({
type: "POST",
data: { 'username': $("#UserName").val() },
async: false,
url: "@Url.Content("~/Wizard/ValidateUserName")",
success: function (data) {
if (data) {
$('#divUser').html("Username is available");
$('#divUser').removeClass("field-validation-error");
}
else {
$('#divUser').html("Username is not available");
$('#divUser').removeClass("field-validation-valid");
$('#divUser').addClass("field-validation-error");
}
datavalue = data;
},
error: function (xhr, ajaxoptions, throwError) {
alert(xhr.responseText);
}
});
return datavalue;
}