2011-11-09 12 views
2

コントローラのProgramSummaryを使用して、2番目のコントローラのTRPResourceにリダイレクトします。 /ProgramSummary/TRPDetails正しいビューが、間違ったコントローラです:MVC3 Actionlinkが間違ったコントローラにリダイレクトする

@Html.ActionLink("Resource(s)", "TRPDetails", "TRPResource", new { ttl = ViewBag.shrt_titles }) 

それは要求されたURLにリダイレクト:詳細ビューのための最初のコントローラでは、私はActionLinkのを持っています。私は(次のように)ActionLinkのは、私が意図したとおりに動作し、正しいコントローラとビューが、値がViewBagで維持されておらず、渡されないということで問題になり

@Html.ActionLink("Resource(s)", "TRPDetails", "TRPResource") 

読むためにActionLinkのを変更した場合。私がここで紛失している、あるいは回避策や別のアプローチが示唆されるという概念は何ですか?

答えて

11

ActionLinkヘルパーの間違ったオーバーロードを使用しています。

@Html.ActionLink(
    "Resource(s)",      // linkText 
    "TRPDetails",      // actionName 
    "TRPResource",      // routeValues 
    new { ttl = ViewBag.shrt_titles } // htmlAttributes 
) 

お知らせ問題:あなたのコードは、following overloadを使用しているのに対し、

@Html.ActionLink(
    "Resource(s)",      // linkText 
    "TRPDetails",       // actionName 
    "TRPResource",      // controllerName 
    new { ttl = ViewBag.shrt_titles }, // routeValues 
    null         // htmlAttributes 
) 

:あなたはcorrect overloadは(最後にnull注意)使用する必要がありますか?

0

ActionLinkヘルパーは、ルーティング設定を使用して、指定されたルート値からURLを構築します。あなたがヒットしたいものよりも前にヒットするルートがある可能性があります。あなたのルーティングはとてもシンプルなので、ルートを注意深く見てください。より複雑なscenariousでは、あなたは

http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

ルーティングデバッガを使用することができます
関連する問題