ASP.NET Core MVCのASPタグヘルパーにリンクパラメーターを追加する方法


104

ASP.NET MVC 1-5で多くの経験があります。今私はASP.NET Core MVCを学び、ページにリンクするパラメーターを渡す必要があります。たとえば、私は次のアクションを持っています

 [HttpGet]
 public ActionResult GetProduct(string id)
 {
      ViewBag.CaseId = id;
      return View();
 }

タグヘルパーを使用してこのアクションのリンクを実装するにはどうすればよいですか?

<a asp-controller="Product" asp-action="GetProduct">ProductName</a>

回答:


195

属性接頭辞を使用できます asp-route-を、ルート変数名にを付ける。

例:

<a asp-controller="Product" asp-action="GetProduct" asp-route-id="10"> ProductName</a>

2
複数のパラメーターがある場合、このメソッドですべてを追加する必要がありますか?
Elvin Mammadov

40
@ elvin-mammadov、yup、使用asp-route-yourParamName例:asp-route-foo="bar"
Alex

2
@ElvinMammadov asp-route-yourParamName追加の入力パラメーターに関するコメントは非常に役に立ちました。ありがとう。
ナム

@Alexこの例では、htmlを次のように生成します<a href="https://stackoverflow.com/Product/GetProduct/10">ProductName</a>質問:アンカータグヘルパーを使用しているときに、どのようにしてパラメーター値(例:10)を取得できjqueryますか?`
ナム

3
@nam ASPヘルパーの横にデータ属性を追加できます。<a asp-route-id="@item.Id" data-id="@item.Id" />次に、IDを$('a').attr('data-id'):)で取得します
SteenSchüttMay

18

次の構文を適用できます。

<a asp-controller="Member"
   asp-action="Edit"
   asp-route-level="3"
   asp-route-type="full"
   asp-route-id="12">Click me</a>

それはこのような呼び出しルートを生成します。

/メンバー/編集/ 3 /フル/ 12

次に、以下に示す方法でそれを受け取ることができます。

[Route({level}/{type}/{id})]
public IActionResult Edit(int level, string type, int id) { ... }

メソッドを装飾する属性はMVCでは必須ではありませんが、リンクの属性をメソッドの渡されたパラメーターにバインドする方法をより明確に示しています。


私の代わりに/Member/Edit/3/full/12それを生成します/Member/Edit/3?type=full&id=12
Arif

1
@Arif理由ははっきりとは言えず、現時点ではC#環境にありません(1つを起動するのも面倒です)。ただし、[FromUrl]または[FromQuery]などを明示的に指定しているかどうかに依存することをお勧めします。これは、.NETパラメーターの異なるバージョン間で異なる場合や、純粋なWebAPI呼び出しの継承クラスに依存する場合があります(ビューなどを備えたBaseControllerのクラスとは対照的です)。ただのゲストライゼーション、NB。
Konrad Viltersten

0

グリッドまたはテーブルのリンクに変数IDを配置する場合は、コードの下の何かを使用できます

[HttpGet]
[Route("/Product/GetProduct/{id}")]
 public ActionResult GetProduct(string id)
 {
      ViewBag.CaseId = id;
      return View();
 }


 <a  asp-controller="Product" asp-action="GetProduct" asp-route-id="@item.id" >ProductName</a>

あなたの答えを説明できますか?説明のないコードのみの回答は、反対票が投じられたり削除されたりする傾向があります。
SSアン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.