在 MVC 3 中的 url 中传递多个参数

Posted

技术标签:

【中文标题】在 MVC 3 中的 url 中传递多个参数【英文标题】:passing multiple parameters in url in MVC 3 【发布时间】:2011-04-27 06:17:59 【问题描述】:

我在控制器中有一个名为“注册”的操作方法

public ActionResult Facility(int id = 0, int contractId = 0)

当我像

这样从 url 调用此方法时
/Registration/Facility/0?contractId=0

它工作正常。现在,当我尝试用另一种方法(如

)构建上面的 url 时
return RedirectToAction("Facility/0?contractId="+ model.ContractId);

它不起作用,浏览器中的url构造不好它就像

/Registration/Facility/0%3fcontractId%3d0

谁能告诉我我在这里做错了什么?

【问题讨论】:

【参考方案1】:

试试这个:

return RedirectToAction("Facility", new  id = 0, contractId = model.ContractId);

见this answer

【讨论】:

感谢 jao,它成功了。但是你能告诉我为什么我的代码不起作用,有什么规则我们必须使用 New.... 来构造 url? 您的代码无法正常工作,因为该方法的重载会自动转义 ?和 / 字符,这样你就不必(它假设如果你想传递参数,你会使用接受参数的重载)。请记住,参数不是 URL,而是操作名称。如果要提供 URL,请使用重定向 这很好解释.....这是我的无知,我之前可以检查方法签名。无论如何,非常感谢。【参考方案2】:

有一个用于重定向的内置方法重载。传入一个带有你想要的值的匿名对象

return RedirectToAction("Facility", new  id = 0, contractId = model.ContractId );

【讨论】:

【参考方案3】:

你必须传递如下参数:

return RedirectToAction("Facility", new  contractId = model.ContractId );

【讨论】:

以上是关于在 MVC 3 中的 url 中传递多个参数的主要内容,如果未能解决你的问题,请参考以下文章

asp.net mvc怎样传递多个url参数

将多个参数从 ajax post 传递到 asp.net mvc 控制器

为啥我不能将url中的参数直接传递给我在MVC中的方法(参数始终为null)

在 POST API 中传递多个参数,而不使用 .Net Core MVC 中的 DTO 类

如何在 URL 中传递多个参数?

MVC - 将整个模型作为参数传递给 JavaScript 中的 Url.Action