2010-11-29 8 views
0

私は私のGlobal.asax.csでこれを持って期待どおりにレンダリングません:@ Html.ActionLink

  <ul id="menu"> 
      @if (!String.IsNullOrEmpty(Context.User.Identity.Name)) 
      { 
       <li>@Html.ActionLink("Home", "Home", new { controller = "User" }, new { username = Context.User.Identity.Name })</li> 
      } 


      </ul> 

     </div> 
    </div> 

事がある:私はこのコードを持っている私の_Layout.cshtmlに続いて

routes.MapRoute(
      "User", 
      "User/{username}/{action}", 
      new { controller = "User", action = "Index", username = "*" } 
     ); 

ここで最初にスイングするときにリンクを適切にレンダリングします。 (リンクは/ User/rob/Homeになります。ここで、 "rob"はユーザー名です。ページの他の場所をナビゲートしてからリンクをクリックすると、リンクは/ User/*/Homeとしてレンダリングされます。コード、Context.User.Identity.Nameは。

たびに、私はここで本当に基本的な何かが足りないのですか?私はを検索するかわからないんだけど、正しいです。

+0

これをページ<%= Context.User.Identity.Name%>に追加して、何が起こるかを確認してください。 – Iain

+0

あなたが使用しているActionLinkの負荷がわかりません.Html.ActionLink( "Home"、 "Home"、 "User"、new {username = Context.User.Identity.Name} 、新しい{}) – Iain

答えて

0

あなたはそのルート与えられた期待すべき正確に何が。ルート値ディクショナリにはusernameを指定しないでHTML属性に指定するので、ルートからのデフォルト値は*です。コントローラとアクションの両方を追加のルートを含む文字列として指定できるシグネチャを使用する必要があります辞書の値

@if (!String.IsNullOrEmpty(Context.User.Identity.Name)) 
{ 
    <li>@Html.ActionLink("Home", "Home", "User" new { username = Context.User.Identity.Name }, null)</li> 
} 
+0

それは私が思ったものですが、質問者はそれが初めてではなく、2番目ではないと言います。 – Iain

+2

@Iain - 私は彼が混乱していると信じています。 – tvanfosson

+0

tvanfosson、それは動作します!私は少しこれを変更する必要があった:

  • @ Html.ActionLink( "ホーム"、 "ホーム"、新しい{コントローラ= "ユーザー"、ユーザー名= Context.User.Identity.Name}、null)
  • しかし、上記のように初めて動作します...なぜですか?何も思いつきません。私はそれをもう一度壊した、それはまだ最初と次の作品ではない。おかげで再びtvanfosson、それは私ナッツを運転していた! – Rob

    関連する問題