在 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 中传递多个参数的主要内容,如果未能解决你的问题,请参考以下文章
将多个参数从 ajax post 传递到 asp.net mvc 控制器
为啥我不能将url中的参数直接传递给我在MVC中的方法(参数始终为null)