2012-04-25 2 views
1

私の最初のMVC3ウェブアプリケーションの1つを書いています。私は自分のナビゲーションをSiteLayout.cshtmlのようにコーディングしています。アクションリンクによって返される結果を同じlayout.cshtmlを使用して、私は私の第二のコントローラの登録に切り替えるたびMVC3レイアウトのナビゲーションへのリンク

<table width="950" border="0" align="center" cellpadding="0" cellspacing="0" style="height: 40px;"> 
      <tr align="center"> 
       <td>@Html.ActionLink( 
        "Home", 
        "Index", 
        null, 
        new { @class= "link1"}) 
       </td> 
       <td><img src="@Url.Content("~/Content/images/img3.gif")" alt="" width="2" height="40" /></td> 
       <td>@Html.ActionLink( 
        "Events", 
        "Events", 
        null, 
        new { @class= "link1"}) 
       </td> 
       <td><img src="@Url.Content("~/Content/images/img3.gif")" alt="" width="2" height="40" /></td> 
       <td>@Html.ActionLink( 
        "Membership", 
        "Membership", 
        null, 
        new { @class= "link1"}) 
       </td> 
       <td><img src="@Url.Content("~/Content/images/img3.gif")" alt="" width="2" height="40" /></td> 
       <td>@Html.ActionLink( 
        "Photos", 
        "Photos", 
        null, 
        new { @class= "link1"}) 
       </td> 
       <td><img src="@Url.Content("~/Content/images/img3.gif")" alt="" width="2" height="40" /></td> 
       <td>@Html.ActionLink( 
        "About Us", 
        "AboutUS", 
        null, 
        new { @class= "link1"}) 
       </td> 
       <td><img src="@Url.Content("~/Content/images/img3.gif")" alt="" width="2" height="40" /></td> 
       <td>@Html.ActionLink( 
        "Contact Us", 
        "ContactUs", 
        null, 
        new { @class= "link1"})</td> 
      </tr> 
     </table>`` 

は、私がサイトに戻ってアクションリンクポイントになるだろうどのように

http://localhost:49365/registration/Photos 

ですコントローラは、現在登録コントローラ上にある場合でもですか?私はすでに私が現在null値を持っている "サイト"を入れてみました。もし私がそれを行うと正しく動作しますが、このURLを表示します。

http://localhost:49365/Site/Photos?class=link1 

このクラスにはもうリンクが適用されません。私は望んでいるURLは、私は私のデフォルトのサイトコントロールからのリンクを使用していた場合に表示されるのと同じURL

http://localhost:49365/site/photos

です。どんな指針も大変ありがとうございます。

多くの祝福、

ジャレッド

+0

を使用するためにnullプレースホルダを渡し続けることができます。このようにして、各タグがサーバーにGETリクエストを行うのを避けることができます –

答えて

1

これは単にオーバーロードの解決の問題です。すべての過負荷のリストはMSDNにあります。書かれたよう

、あなたはHtmlHelper, string, string, object, objectoverloadを使用して終了し、あなたの最初のnullrouteValuesあり、そのため、匿名オブジェクトがあなたのhtmlAttributesです。

あなたは右のコントローラーを取得するために"Site"の代わりnullを渡す正しい軌道に乗っているが、これはHtmlHelper, string, string, string, object, objectoverloadを使用して移動できます。最初のオブジェクトはまだrouteValuesなので、なぜそれがクエリ文字列になるのかが説明されています。 htmlAttributesを指定するに

、あなたはあなたのビューで画像のためのCSSを使用し、routeValues

@Html.ActionLink( 
       "Photos", 
       "Photos", 
       "Site", 
       null, 
       new { @class= "link1"}) 

たり、offtopicヒントとしてnamed arguments

@Html.ActionLink( 
       "Photos", 
       "Photos", 
       "Site", 
       htmlAttributes: new { @class= "link1"}) 
+0

この投稿に感謝して、HTMLヘルパーActionLink()のオーバーロードをより完全に理解するように指示しました。私がやったことは次のようなものでした。 @ Html.ActionLink( "お問い合わせ"、 "ContactUs"、 新しい{controller = "サイト"}、 htmlAttributes:new {@class = "link1"}) – user1345632

関連する問題