2009-06-16 67 views
0

有沒有其他人有這個問題?我必須做錯什麼。ASP.Net MVC:等等...默認路由參數必須命名爲id?

所以我設立了這樣的錯誤路線:

routes.MapRoute 
(
"SharedError", 
"Shared/Error/{error}", 
new { error = "" } 
); 

,並呼籲像:

return parentController.RedirectToRoute("SharedError", new RouteValueDictionary(new { error = errorMessage.ToString() })); 

和控制器上:

public ActionResult Error(String error) 

簡單吧?那麼當這是實際運行,誤差爲null,儘管網址看起來像:

/共享/錯誤/ ThisIsTheError

但在錯誤方法錯誤參數爲null。 (是的,我試過其他的詞)

現在,如果我用'id'這個詞取代所有的東西一切正常。

的Global.asax.cs

routes.MapRoute 
(
"SharedError", 
"Shared/Error/{id}", 
new { id = "" } 
); 

重定向:

return parentController.RedirectToRoute("SharedError", new RouteValueDictionary(new { id = errorMessage.ToString() })); 

共享控制器:

​​

ID是一個必須有所有路由字,如果你有一個默認路由考慮價值?

回答

5

你總是需要指定控制器和操作參數:

routes.MapRoute 
(
"SharedError", 
"Shared/Error/{error}", 
new { controller = "Shared", action="Error", error = "" } 
); 

我猜測,爲什麼使用ID爲你工作的原因是因爲你還註冊了默認路由,其ID爲控制器和操作的參數和默認值。

注意,如果你仍然有默認路由,確保您之前添加你的路線,否則會首先匹配另一個。

+0

對,但它應該是新的{controller =「Shared」,action =「Error」,error =「」} – CoderDennis 2009-06-16 23:31:03