1

这是我认为的jquery:

 $("#btnSelect1").click(function () {
        var donationTypeID = $(this).closest('p').find('#selectList').val();
        var id = parseInt(donationTypeID);
        var id2 = $('#person').val();
        var persId = parseInt(id2);

        // var personName 
        var route = '/Donation/ContinueDonation/' + id + '?personId =' + persId;

        $("#donationSection1").load(route, function () {...});...

这是控制器方法

 public ActionResult ContinueDonation(int id, int personId)
    {}

关于如何让它发挥作用的任何想法?谢谢

4

2 回答 2

1

我实际上认为以前的答案并不完全正确。如果查询字符串命中了 MVC 建立的默认路由,该路由与 {controller}/{action}/{id} 之类的 URL 匹配,则您的查询字符串是正确的。

真正发生的事情是您弄乱了路由,而您的查询要么没有达到默认路由,要么您更改了它。

我要做的是获取 RouteDebugger(只需通过 nuget 获取)并查看您的查询字符串命中哪个路由。您可以为您希望的任何 URL 设置路由(类似于友好 URL 的全部要点),因此如果您希望路由为 /ContinueGiving/{id}/{personId} 您可以通过添加路由来做到这一点在路由的开头添加如下定义:


routes.MapRoute(
    name: "ContinueDonation",
    url: "ContinueGiving/{id}/{personId}",
    defaults: new { controller = "Donation", action = "ContinueDonation" },
    constraints: new { id = @"\d+", personId = @"\d+" }
);

如果框架可以在发布的值、查询字符串等中找到任何匹配项,则您未指定的任何参数都将被映射。

约束确保该路由仅在传递的参数是数字时才匹配。

所以以前的答案有效,因为不知何故,带有 id 的路线不匹配,但这不是你的问题。

于 2012-05-06T02:54:03.160 回答
1

您没有提供 id 值的键:

var route = '/Donation/ContinueDonation/?id=' + id + '&personId =' + persId;

顺便说一句,该var persId = parseInt(id2);行是多余的,因为使用 HTTP 发送的每个参数都是一个字符串,因此"234"234完全相同。

于 2012-05-05T22:01:11.363 回答