2014-10-02 52 views
0

我有一個具有以下作用的典型的MVC應用程序:傳PARAMS

public ActionResult MyAction(string param1) 

當我把這個動作是這樣的:

http://domain/MyController/MyAction?param1=dasas 

我收到的param1像預想的那樣:「dasas 「

但是在MVC中,這個想法是將params傳遞給下面的對嗎?

http://domain/MyController/MyAction/dasas 

這樣它不起作用,我想知道爲什麼!任何想法?

UPDATE: 這裏是我的路線:

routes.MapRoute(name: "Default", url: "{controller}/{action}/{id}", defaults: 
       new { 
        controller = MVC.RegistrationAuthority.Name, 
        action = MVC.RegistrationAuthority.ActionNames.Landing, 
        id = UrlParameter.Optional 
       }); 
+0

On「但是在MVC中,這個想法是將params傳遞給下面的」 - 不是必須的 - 這取決於你決定什麼應該是url的一部分以及應該作爲查詢參數傳遞什麼。 – 2014-10-02 15:59:09

+1

我認爲它已經在鏈接副本中得到解答。當重複提示(與Anthony Shaw的答案相同)時,請確保正確命令路線 - 更具體的路線應該在*更通用一次之前像默認(即「/ {控制器}」之前的「/ foo」)。 – 2014-10-02 16:00:14

回答

1

你需要配置你的路線,知道他在param所被稱爲param1

開箱即用asp.net的MVC只有想通的傳遞爲{id} PARAM

routes.MapRoute(null, "MyController/MyAction/{param1}", new { controller = "MyController", action = "MyAction"}); 

確保可能重寫它等航線之前添加這條路線(即。默認路由)

+0

它不應該使用默認路線(我更新了問題)?我試着添加你的代碼,但它仍然是空的 – Bonomi 2014-10-02 15:56:54

+0

我改變了規則的順序,把最普通的規則放到最後,它就起作用了。安東尼,你的回答幫助了我。 – Bonomi 2014-10-02 16:15:38

+0

是的,對不起。我應該是特定的,你的最通用的路線需要先來 – 2014-10-02 17:24:03