【问题标题】:Ajax Routing Calling Controller Name TwiceAjax 路由调用控制器名称两次
【发布时间】:2014-06-24 14:01:04
【问题描述】:

我正在尝试通过 ajax 对我的控制器进行简单调用。 RouteConfig 未更改并设置为默认值。当我进行ajax调用时,“网络”调试工具中请求的Url是:

'http://localhost:59275/Leaderboard/Leaderboard/GetPosition'

这会导致 404,因为控制器,Leaderboard,被添加到 URL 中两次。正确的网址应该是

'http://localhost:59275/Leaderboard/GetPosition'

我的ajax调用如下:

  $.ajax({                
            url: 'Leaderboard/GetPosition',
            type: "GET",
            dataType: 'xml',
            success: function (data) {
                $('#results').html(data);;
            }
        });

而我的控制器如下:

public class LeaderboardController : Controller
    {
        [Webmethod]
         public static DataTable GetPosition()
         {
             // do stuff
         }


    }

【问题讨论】:

    标签: ajax model-view-controller


    【解决方案1】:

    如果请求 ajax 的页面的根 URL 是“Leaderboard”,那么 ajax 调用上的 url 应该只有“GetPosition”

    或者您可以使用“/Leaderboard/GetPosition”,前面带有“/”

    【讨论】:

    • 我知道这是 5 岁,但你能解释一下吗?为什么前面需要“/”?在我的情况下,当我调试我的应用程序时,它会将控制器添加到其中,并且 url 将是 product/product/listofproducts,但如果不进行调试,它将是正确的,就像这样 product/listofproducts。您的解决方案有效,但我没有找到解释原因的资源。提前致谢。
    【解决方案2】:

    使用Url.Action 帮助器生成正确的网址。

    改变这个:

     url: 'Leaderboard/GetPosition'
    

    到这里:

     url: '@Url.Action("GetPosition","Leaderboard")'
    

    【讨论】:

    • 这确实解决了我在 url 中重复控制器的问题。谢谢
    猜你喜欢
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    相关资源
    最近更新 更多