我已经浏览了很多论坛来寻求解决方案,但都是徒劳。 我的问题是:
我的家庭 Controller 中有一个名为 CallUser 的操作。我通过 ajax 调用它。
我的网址类似于 mydomain.com/Home/CallUser
我想要像 mydomain.com/CallUser 这样的 URL
我不想让“/Home”访问任何操作
所以我添加了自定义路由
routes.MapRoute(
"Custom",
"{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Ajax 调用:
function CallUser()
{
var mobNum = $('#userMobileNo').val();
var isValidNumber=validatePhone(mobNum);
if(isValidNumber)
{
$.ajax({
url: "../Home/CallUser",
type: "POST",
data: JSON.stringify({ destinationNumber: mobNum }),
datatype: "json",
traditional: true,
contentType: "application/json; charset=utf-8",
success: function (data) {
},
error: function (err) {
},
failure: function(err)
{
}
});
}
else
{
}
}
在家庭 Controller 中调用博客操作
@Html.ActionLink("Blog", "Blog", "Home")
最佳答案
不要仅仅因为不喜欢 URL 而破坏标准 MVC 模式,只需创建一个 UserController
并具有 Call
操作,以便 URL 变得可读:
"../User/Call"
这适用于如下 URL:
"../User/Hangup"
"../User/GiveAbuse"
"../User/Ignore"
"../User/WhyDontTheyEverCall"
Controller 旨在包含问题域的一部分(在本例中,所有操作都与用户有关),所以为什么要与 MVC 的方式进行斗争呢:)
关于jquery - Ajax 不适用于 MVC 自定义路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30457975/