Elv*_*dov 81 c# url-parameters asp.net-core-mvc tag-helpers asp.net-core
我对ASP.NET MVC 1-5有很多经验.现在我学习ASP.NET Core MVC并且必须将参数传递给页面中的链接.例如,我有以下Action
[HttpGet]
public ActionResult GetProduct(string id)
{
ViewBag.CaseId = id;
return View();
}
Run Code Online (Sandbox Code Playgroud)
如何使用标记帮助程序实现此操作的链接?
<a asp-controller="Product" asp-action="GetProduct">ProductName</a>
Run Code Online (Sandbox Code Playgroud)
Ale*_*lex 157
您可以使用属性前缀asp-route-为路由变量名称添加前缀.
例:
<a asp-controller="Product" asp-action="GetProduct" asp-route-id="10"> ProductName</a>
Run Code Online (Sandbox Code Playgroud)
您可能要应用以下语法。
<a asp-controller="Member"
asp-action="Edit"
asp-route-level="3"
asp-route-type="full"
asp-route-id="12">Click me</a>
Run Code Online (Sandbox Code Playgroud)
这样将产生这样的呼叫路由。
/会员/编辑/ 3 /完整/ 12
然后,您可以通过如下所示的方法接收它。
[Route({level}/{type}/{id})]
public IActionResult Edit(int level, string type, int id) { ... }
Run Code Online (Sandbox Code Playgroud)
尽管在MVC中不需要修饰该方法的属性,但是它更清楚地显示了如何将链接中的属性绑定到方法中传递的参数。
如果你想将变量 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>
Run Code Online (Sandbox Code Playgroud)