2014-11-03 78 views
0

請標明爲重複 - Its already answered here是否有可能在MVC4中有一個名爲action的參數?

是否有可能有一個在MVC4命名的動作參數?

嘗試這樣做會導致參數返回控制器操作的名稱而不是參數值。

/Somecontroller/Someaction?action=value 

當我嘗試訪問參數動作時,我得到「Someaction」作爲結果而不是「value」。

嘗試將參數綁定到其他名稱也無濟於事。

public ActionResult Someaction([Bind(Prefix = "action")] String id) 

編輯:我還沒有在保留的MVC關鍵字中找到'Action'/'action'。

+0

嘗試@前綴工作:http://stackoverflow.com/questions/1185782/map-asp-net-mvc-action-parameter-名稱與其他名稱 – 2014-11-03 12:16:04

+0

這樣做沒有什麼區別。 – 2014-11-03 12:21:29

+2

[MVC 5未設置參數名稱爲「action」爲傳遞值]的可能重複(http://stackoverflow.com/questions/25013997/mvc-5-not-setting-parameter-named-action-to-passed-value ) – demoncodemonkey 2014-11-03 12:39:48

回答

0

我沒有測試過這一點,但我會假設你可以嘗試改變你的缺省路由的網址,以比其他行動的東西

routes.MapRoute("Default", "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 

routes.MapRoute("Default", "{controller}/{cAction}/{id}", 
    new { controller = "Home", cAction = "Index", id = UrlParameter.Optional }); 

那麼這應該讓你在Action中將動作用作參數。我不確定你爲什麼想要這樣做,我可能會建立一個接受我的動作的路由網址,並將其構建爲類似於以下網址的一部分:

/SomeController/SomeAction/value其中value是您的「動作」參數。

編輯基於評論:

我成功地創建了去一個aspx url'd路線

routes.MapRoute(null, "third-party.aspx", new { controller = "Home", action = "Index" }); 

顯然,你可以添加你想在這裏的任何控制器/行動,並在那裏你的路線要處理它,那麼你通過/third-party.aspx?action=value訪問路線,它似乎爲我

+0

這不起作用並導致出現異常「System.InvalidOperationException:RouteData必須包含名爲'action'的項目,其中包含非空字符串值。」我問這個問題的原因是因爲我有一個第三方應用程序,它通過名爲action的參數重定向到我的程序。我不確定如何在MVC中優雅地處理它。 – 2014-11-03 14:24:45

+0

就像我說過的,我不確定它是否會真正起作用,因爲按照慣例,行動是保留的,但是認爲它可能值得試圖覆蓋它。讓我嘗試一下,然後在另一個可能的選項 – 2014-11-03 14:34:17

+0

上對我的答案進行編輯,以幫助您解決問題 – 2014-11-03 14:43:48

相關問題