ASP.NET Core MVC'de asp etiketi yardımcılarına bağlantı parametresi ekleme


105

ASP.NET MVC 1-5 ile çok deneyimim var . Şimdi ASP.NET Core MVC'yi öğreniyorum ve sayfaya bağlanmak için bir parametre iletmem gerekiyor. Örneğin şu Eylemim var

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

Etiket yardımcıları kullanarak bu eylem için bağlantıyı nasıl uygulayabilirim?

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

Yanıtlar:


196

asp-route-Yol değişkeni adlarınıza önek eklemek için öznitelik önekini kullanabilirsiniz .

Misal:

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

2
Birden fazla parametrem varsa, bu yöntemle her şeyi eklemeliyim?
Elvin Mammadov

40
@ elvin-mammadov, evet, asp-route-yourParamNameörneğin şunu kullanarak :asp-route-foo="bar"
Alex

2
@ElvinMammadov asp-route-yourParamNameEk giriş parametreleriyle ilgili yorumunuz çok yardımcı oldu. Teşekkürler.
nam

Olarak html oluşturmak erecek örneğini @Alex: <a href="https://stackoverflow.com/Product/GetProduct/10">ProductName</a>. Soru : Bağlantı etiketi yardımcısını kullanırken parametre değerini (örn. 10) kullanarak nasıl alabiliriz jquery? `
nam

3
@nam ASP yardımcısının yanına bir veri niteliği ekleyebilirsiniz. <a asp-route-id="@item.Id" data-id="@item.Id" />ve sonra kimliği ile alın $('a').attr('data-id'):)
Steen Schütt

18

Aşağıdaki sözdizimini uygulamak isteyebilirsiniz.

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

Bu, böyle bir çağrı rotası oluşturacaktır.

/ Üye / Düzenle / 3 / tam / 12

Daha sonra aşağıda gösterilen yöntemde alabilirsiniz.

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

Yöntemi dekore eden öznitelik MVC'de gerekli olmasa da, bağlantıdan özniteliklerin yöntemde geçirilen parametrelere nasıl bağlanacağını daha net gösterir.


Onun yerine benim /Member/Edit/3/full/12için üretir/Member/Edit/3?type=full&id=12
Arif

1
@Arif Nedenini kesin olarak söyleyemem ve şu anda bir C # ortamında değilim (bir tane başlatmak için çok tembel). Bununla birlikte, bunun açıkça [FromUrl] veya [FromQuery] vb. Belirtip belirtmememize bağlı olduğunu öneririm . Bu, farklı .NET palatform sürümleri arasında farklılık gösterebilir ve / veya saf WebAPI çağrıları için sınıfları miras almaya bağlıdır (as BaseController sınıflarının aksine görünümler ve tüm bunlar). Sadece bir misafir yorum, NB.
Konrad Viltersten

0

değişken kimliğini kılavuza veya tabloya bağlantıya koymak isterseniz aşağıdaki kod kullanılabilir

[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>

Cevabınızı açıklayabilir misiniz? Açıklama içermeyen salt kod yanıtları genellikle olumsuz oylanır veya kaldırılır.
SS Anne
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.