2011-07-21 8 views
0

私は私のコントローラで簡単なのActionResultを持っている:私はそれをブレークポイント場合パラメータはActionResultでは機能しますが、MVC3のRouteDataには存在しません。

public ActionResult Index(int productId) 
{ 
    return View(); 
} 

は、私はPRODUCTIDが通過し、nullではないされている確認することができます。しかし、RouteDataを調べると:

(int)RouteData.Values["productId"] 

そこには何もありません。コントローラーのキーとアクションのキーはありますが、パラメーターは何もありません。どうしたの?

答えて

1

productIdをルートのどこかにトークンとして宣言しましたか?

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

RouteDataコレクションで見つからない場合は、こちらをご覧ください。このコレクションには、ルートで宣言されたトークンのみが含まれています。

デフォルトルートはid(Visual Studioのウィザードによって生成されたもの)を使用していますので、あなたのactionパラメータの名前を変更できます。完全例えばProductsControllerに理にかなって

public ActionResult Index(int id) 
{ 
    return View(); 
} 

。そして今、あなたはRouteData.Values["id"]にそれを見つけるでしょう。

関連する問題