2011-01-18 8 views
0

エリア内にマスターページがあり、エリア外にコントローラがあります。コントローラは "SecurityController"と呼ばれていますが、私はいくつかの投稿で見たように、私にはdoft'tマップされているように、私は<%= Url.Action( "LogOut"、 "Security"、new {area = ""})%> "ルート"コントローラ。 /AREANAME/SecurityController/witchの間違ったリンクが生成されました。エリア内のアクション

私は間違っていますか?

ありがとうございました。

答えて

1

説明している動作を再現できませんでした。ここで私がやった手順は以下のとおりです。

  1. が新しいエリアを追加し、デフォルトのテンプレート
  2. を使用して、新しいASP.NET MVC 2プロジェクトを作成しますが~/Areas/AREANAME/Controller/FooController.cs内FooControllerを追加Visual Studioのウィザード
  3. を使用してAREANAMEと呼ばれます:

    public class FooController : Controller 
    { 
        public ActionResult Index() 
        { 
         return View(); 
        } 
    } 
    
  4. NEを追加~/Areas/AREANAME/Views/Shared/Site.Master
  5. ~/Views/Shared/Site.Masterからマスターページをコピー、貼り付けw IndexビューはFooControllerIndexアクションに対応し、マスターページを使用しています。デフォルトのままにしておきます。どこかの領域のマスターページ内の
  6. は、以下を追加(またはFooControllerのIndexビュー内に、それは本当に問題ではありません):

    <%= Url.Action("Index", "Home", new { area = "" }) %> 
    
  7. は、サイトを実行し、/AREANAME/foo/indexに移動します。
  8. 正しいURLが生成されます。/

次のURLが生成されたヘルパーのarea=""一部削除した場合:/AREANAME/Homeを。

だから?

+0

こんにちはダリン...私は今それを試してみましょう。 – TiagoDias

+0

こんにちはダーリン...あなたの作品は魅力のように動作します!!私は私のプロジェクトで間違って何をしているのか分かります...あなたにいつ結論があるか教えてください。おかげで – TiagoDias

+0

ダーリン...ありがとうU verry。私はこの "問題"で数時間を失ってしまったが、問題は実際にルーティングの問題だった。私はエリアにマッチするルートを書いたので、アクションリンクは常に自分の "ルート"の代わりに私のエリアをマップします。あなたの時間に申し訳ありませんが、あなたは本当にこの1つで私を助けた;)ありがとう – TiagoDias

関連する問題