1

MVC のマスター ページには次のようなものがあることはご存知のとおりです。

<nav>
     <ul id="menu">
         <li id="id1"><%: Html.ActionLink(...)%></li>
         <li id="id2"><%: Html.ActionLink(...)%></li>
         <li id="id3"><%: Html.ActionLink(...)%></li>
     </ul>
</nav>

ユーザーがどのタブをクリックしたかを確認する方法は? URLか何かをチェックすることによって?これらのリンクはすべて、異なるコントローラーのメソッドに移動します。

4

2 に答える 2

1

そのメソッド(アクション)は(通常)ブラウザに出力として表示されるビューを返します(アクションメソッドで他の何かを指定しない限り)。

ASP.NET MVCには、ページ要求/リンクに直接接続されているページはありません。MVCがどのように機能するかについてのいくつかの基本的な概念を理解する必要があると思います。

ページをリクエストすると、そのリクエストはコントローラーのアクションメソッドによって処理されます。次に、actionメソッドが出力を返し、それがブラウザに表示されます。actionメソッドは、「HelloWorld」文字列または複雑なHTMLマークアップを持つビューを返すだけです。ビューを返すとは、ビューフォルダで使用可能なファイルの内容を返すことを意味します。

ASP.NETMVCはいくつかの規則で機能することを忘れないでください。たとえば、「User」というコントローラーとアクションメソッドがある場合は次のように表示されます

public class UserController
{
 public ActionResult Show()
 {
   return "Hello World";
 }

}

のユーザーブラウザを使用するyourdomainname/User/Showと、UserControllerのShow Actionメソッドが実行され、文字列「HelloWorld」が返されます。したがって、ブラウザに「HelloWorld」が表示されます。

ビューを返したい場合はどうなりますか?Showメソッドを次のように置き換えます

 public ActionResult Show()
 {
   return View();
 }

先ほどお話ししたように、今は慣習に従う必要があります。つまり、Views->User->FolderShow.cshtmlという名前でビューファイルを作成する必要があります。このファイルが存在する場合、MVCはそれを返します。存在しない場合、MVCはviewsフォルダー内の共有フォルダーを探します。

ビューを追加するには、アクションメソッドを右クリックして、コンテキストメニューから[ビューの追加]を選択します。

ここに画像の説明を入力してください

良い点の1つは、規則をオーバーライドできることです。つまり、別のビューを返したい場合は、Viewメソッドを呼び出すときにパスを指定できます。

質問に戻ります。Html.ActionLinkは、アンカータグを出力するHTMLヘルパーメソッドです。

元 :Html.ActionLink("Show User Info","Show","User")

これにより、「ユーザー情報を表示」というテキストが含まれるリンクが出力され、コントローラーのShowActionメソッドがポイントされます。Userしたがって、上記のメソッドを呼び出した場合の出力HTMLマークアップは次のようになります。

<a href="User/Show">Show User Info</a>

このメソッドにはさまざまなオーバーロードがあります。

編集:クリックされているリンクを強調表示するため

どのリンクがクリックされているかを色分けして知りたい場合は、部分ビューを使用してメニューを表示します。また、アクション呼び出しメソッドを取得したら、クリックされたリンクを示すプロパティ値をビューモデルに設定し、ビューでそのビューモデルを使用して部分ビューを呼び出します。

http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

于 2012-04-07T15:35:34.843 に答える
0

document.location.href だけで十分でした。

于 2012-05-09T13:40:03.473 に答える