C# 基于jqueryajax的ASP.netmvc路由问题

C# 基于jqueryajax的ASP.netmvc路由问题,c#,jquery,asp.net-mvc,asp.net-mvc-3,routing,C#,Jquery,Asp.net Mvc,Asp.net Mvc 3,Routing,我的页面是domain.com/home/details/1 在我的jQueryAjax调用中,当它调用domain.com/home/details/home/getdata时,我有以下内容 我可以做些什么来正确解决它 $(document).ready(function () { oTable = $('#example').dataTable({ "bServerSide": true, "sAjax

我的页面是domain.com/home/details/1

在我的jQueryAjax调用中,当它调用domain.com/home/details/home/getdata时,我有以下内容

我可以做些什么来正确解决它

$(document).ready(function () {

            oTable = $('#example').dataTable({
                "bServerSide": true,
                "sAjaxSource": "Home/GetData/",
                "bProcessing": true,
                "bPaginate": true,
                "sPaginationType": "full_numbers",
                "bFilter": true,
                "bAutoWidth": false,
                "fnServerData": function (sSource, aoData, fnCallback) {
                    /* Add some extra data to the sender */
                    //aoData.push({ "filtervalue": $('#filtervalue').val(), "Options": $('#Options').val() });
                    $.getJSON(sSource, aoData.concat($('form').serializeArray()), function (json) {
                        /* Do whatever additional processing you want on the callback, then tell DataTables */
                        fnCallback(json)
                    });
                }
            });

        });

您是否尝试在Ajax源代码之前添加一个前导斜杠

"sAjaxSource": "/Home/GetData/"
更新

正如下面的评论中所述,硬编码URL可能会在以后引起问题

Darin已经发布了关于使用内置URL帮助程序的帖子,所以我不会编辑我的帖子来包含这些信息。我采用的方法稍有不同,如下所述:


我发现这种工作方式在与前端团队合作时非常有用。他们发现理解
Url.RequestedPage()
格式非常容易,这意味着他们不必每次都需要我的帮助来链接或请求某些内容。

我认为您的路径应该是

"sAjaxSource": "/home/details/home/getdata",
而且
getdata
不应该是像getdata.php之类的文件名吗

"sAjaxSource": "/home/details/home/getdata.php",

绝对在ASP.NET MVC中处理URL时始终使用URL帮助程序。绝对绝不像您那样硬编码URL

因此:

如果这是在一个单独的javascript文件中,您可以在
示例中使用HTML5
data-*
属性:

<div id="example" data-url="@Url.Action("GetData", "Home")">
    ...
</div>

该死的。我想我试过了所有的场景,显然不是那一个!感谢-1,为硬编码的网址,而不是使用网址heleprs。一旦你将应用程序部署到IIS中的虚拟目录中,它就会崩溃。@Darin所说的是正确的,尽管它现在对你有效,但将来它会崩溃,请使用永久的健康解决方案。公平地说,Darin。我同意使用硬编码的URL不是一个好办法。+1表示建议帮助者。如果您正在虚拟目录(例如)中部署应用程序,则使用
/Home/GetData
将不起作用。建议您始终使用URL帮助程序,而不要硬编码URL。
<div id="example" data-url="@Url.Action("GetData", "Home")">
    ...
</div>
"sAjaxSource": $('#example').data('url')