2011-04-27 39 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 });