2011-04-27 79 views
5

我有所谓的“注册”控制器的操作方法为传递多个参数中的URL在MVC 3

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

当我打电话从URL像

/Registration/Facility/0?contractId=0 

这种方法,工作正常。现在,当我试图建立上述网址中的另一种方法像

return RedirectToAction("Facility/0?contractId="+ model.ContractId); 

这是行不通的,在浏览器的网址不是很好构造谈到像

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

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

回答

11

试试这个:

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

this answer

+0

感谢饶,它的工作。但是,你能告诉我为什么我的代码不工作,是否有任何规则必须使用New {...}来构建url? – pramodtech 2011-04-27 06:38:46

+3

你的代码不工作,因为该方法的重载自动转义?和/字符,所以你不必(它假定如果你想传递参数,你会使用接受参数的过载)。请记住,该参数不是一个URL,它是一个操作名称。使用重定向,如果你想提供一个URL – 2011-04-27 06:41:03

+0

正是马丁所说:-) – jao 2011-04-27 06:56:06

1

有一个内置的方法重载的重定向。与值的匿名对象传递你想

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

你要传递的参数如下图所示:

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