jquery - Ajax 不适用于 MVC 自定义路由

标签 jquery ajax asp.net-mvc

我已经浏览了很多论坛来寻求解决方案,但都是徒劳。 我的问题是:

我的家庭 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/

相关文章:

JavaScript/jQuery : Show DIV until user stops typing in Textbox

javascript - 确保 jQuery 和 PHP 中的 AJAX 服务调用安全(使用 session token )

asp.net-mvc - Asp.net MVC 中的 TimeSpan 和 "24:00"解析错误

asp.net-mvc - 如何处理 ASP.NET MVC 表单中的复选框?

jquery - 移动设备的选项卡动画

javascript - 将 CSS 属性值与 Eclipse 中的字符串进行比较

php - 在 ajax 调用后加载 View ,CodeIgniter

javascript - 如何让浏览器解压缩 Ajax 获取 gzipped 文本文件?

ruby-on-rails - 如何在rails 4.0中实现ajax进行简单的乘法运算?

c# - 在 MVC 中处理具有相同名称的多个操作