如何在 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 你能告诉我如何在这里使用“对象参数”吗? 您在对象参数上是正确的,但似乎 actionNameJquerycontrollerName 互换了 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&param2=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 中发送多个参数?的主要内容,如果未能解决你的问题,请参考以下文章

@Url.Action 添加“amp;”在控制器中创建空值的参数之间?

Url.Action:如何将参数从视图传递到控制器?

如何阻止 URL.Action 包含参数?

Url.Action 是编码参数值

如何在ios中发送多个参数?

Url.Action 在我的 url 中放了一个 &,我该如何解决这个问题?