如何在 Url.Action 中发送多个参数?
Posted
技术标签:
【中文标题】如何在 Url.Action 中发送多个参数?【英文标题】:How do you send multiple parameters in a Url.Action? 【发布时间】:2014-08-02 10:04:00 【问题描述】:如何在Url.Action
中发送多个参数?
我有一个带有动作的控制器,我想要 2 个参数,但没有收到第二个参数。
我的代码是:
@Url.Action("Products", "Jquery", new categoryid = 1, Productid = 2)
Publc Action Jquery(int categoryid ,int Productid)
但我只收到categoryid
,每次Productid
为空。
请告诉我该怎么做?
【问题讨论】:
您将categoryid
指定为字符串,但在Jquery
操作方法中,签名将int
用于categoryid
。试试new categoryid = 1, Productid = 2
我不确定是不是拼写错误,但返回类型应该是ActionResult
并且参数是混合的.. 应该是@Url.Action("actionName", "controllerName", "object params")
@robwaminal 你能告诉我如何在这里使用“对象参数”吗?
您在对象参数上是正确的,但似乎 actionName
是 Jquery
与 controllerName
互换了 Products
我的压力
yes Products 是控制器,Jquery 是动作名称,现在我想发送 2 个参数,但第 2 个参数没有收到。
【参考方案1】:
像这样试试。
@Url.Action("Jquery", "Products", new @categoryid = 1, @Productid = 2)
public ActionResult Jquery(int categoryid, int Productid)
return View();
您应该在操作中获得 2 个参数。假设Jquery
Action 在ProductController
下
【讨论】:
我试过这个,但它不起作用,无法接收第二段。它始终为空 在您的 param 对象参数上添加@
应该可以解决问题
实际上,是否在参数前面加上@
并不重要。它仍然适用于第一个。我不知道如何解释。也许你有一些拼写错误?
我有同样的问题,这对我不起作用,实际上,问题在于它构建的 url 添加了这样的特殊字符:/Controller/Action?param1=foo¶m2=fooo 【参考方案2】:
您是从 JQuery 调用此操作吗?听起来你可能来自症状(或者至少@roberto 可能是);如果是这样,请将其包装在 html.Raw
:
@Html.Raw(@Url.Action("Jquery", "Products", new @categoryid = 1, @Productid = 2));
【讨论】:
这对我有用。我不必为变量名添加@
【参考方案3】:
我遇到了同样的问题,添加了@但没有用。
对我有用的是@Html.Raw
指令。
@Html.Raw(@Url.Action("Jquery", "Products", new categoryid = 1, Productid = 2))
public ActionResult Jquery(int categoryid, int Productid)
return View();
这样可以获取控制器中的所有参数,而不仅仅是第一个。
【讨论】:
【参考方案4】:我知道这是一篇旧帖子,但我也只能靠它周围的 Html.Raw
函数感到幸运。从 jQuery 调用时,添加 @
似乎没有帮助。
以下是使用 jsTree 时它在页面上的工作方式。
$.ajax(
cache: false,
type: 'POST',
url: '@Html.Raw(@Url.Action("GetGenTreeData", "Documents", new folder = "Docs", treeTitle = "Listed Board Documents" ))',
dataType: 'json',
success: function(data)
$('#docTree').jstree(
'core':
'data': data
);
,
【讨论】:
以上是关于如何在 Url.Action 中发送多个参数?的主要内容,如果未能解决你的问题,请参考以下文章