【问题标题】:ASP.Net MVC Json Result: Parameters passed to controller method issueASP.Net MVC Json 结果:传递给控制器​​方法的参数问题
【发布时间】:2009-03-18 19:54:47
【问题描述】:

我在获取返回 JsonResult 以接受通过 JQuery getJSON 方法传递的参数的控制器方法时遇到问题。

当 getJSON 方法调用的第二个参数(“数据”)为空时,我正在编写的代码可以正常工作。但是当我尝试在那里传递一个值时,似乎控制器方法从未被调用过。

在这个例子中,我只想使用一个整数。运行良好的 getJSON 调用如下所示:

$.getJSON(”/News/ListNewsJson/”, null, ListNews_OnReturn);

控制器方法是这样的:

public JsonResult ListNewsJson(int? id)
{
    …
    return Json(toReturn);
}

通过在 ListNewsJson 方法中设置断点,我看到当 getJSON 的 data 参数为 null 时会调用此方法,但是当我将其替换为 value 时,例如 3:

$.getJSON(”/News/ListNewsJson/”, 3, ListNews_OnReturn);

…控制器方法/断点永远不会被命中。知道我做错了什么吗?

我还应该提到,如果我通过浏览器手动转到地址(“/News/ListNewsJson/3”),控制器方法可以正常工作。

【问题讨论】:

    标签: asp.net jquery asp.net-mvc json


    【解决方案1】:

    getJSON 需要一组键/值对,而不是裸值,因此您需要使用 { id: 3 } 来传递 id 值。不幸的是,这将变成 /News/ListNewsJson/?id=3 这不是你想要的。我建议只是将值附加到 Url 以在路由表单中构造它。我还假设该值实际上来自一个变量,所以我以这种形式编写了它。如果它可能为 null,那么您需要做一些更复杂的事情来制定 Url,这样才有意义。

    var id = '3';
    $.getJSON(”/News/ListNewsJson/” + id, ListNews_OnReturn);
    

    【讨论】:

      【解决方案2】:

      我知道这是一个较旧的线程,但你为什么不使用 MVC Url.Action() 助手?这将确保您的路线是正确的。

      $.getJSON('<%=Url.Action("ListNewsJson", "News") %>/' + id, ListNews_OnReturn);
      

      当然,如果 id 值来自 ViewData,您可以使用 Url.Action() 辅助方法的第三个参数来传递具有 id 属性的匿名类型,MVC 将创建所需的 URL。否则,如果值来自 javascript 函数,则在 javascript 中连接它。

      HTH

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-14
        • 1970-01-01
        • 1970-01-01
        • 2015-01-25
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 2015-09-13
        相关资源
        最近更新 更多