为什么 @url.Action在ASP.NET Core中导致编译时间错误



我不能在asp.net core中使用 @url.action,因为我有错误:

iurlhelper没有名为Action

的适用方法

我想使用 @url.Action:

<a href="@(Url.Action(ViewBag.actionName, ViewBag.controllerName, new { page = i }) + ViewBag.routeValues)">page i</a>

在ASP.NET MVC中,它生成了我的URL:

/home/list?page = 5&amp; search = abc

在viewbag.routevalues中我传递其他参数,例如: search = abc&amp; active = true ,然后将其粘贴到url 之后,'page'page'parame

我认为我不能使用标签助手和" ASP -Route"做同样的事情 - 那我该怎么办?


好的 - 我需要Cas Viewbag到字符串:

<a href="@(Url.Action((string)ViewBag.actionName, (string)ViewBag.controllerName, new { page = i }) + (string)ViewBag.routeValues)">page i</a>

您应该首先阅读ASP.NET核心文档,以找出标签助手是什么以及如何使用它们。

在ASP.NET Core的Razor实现中,使用标签助手代替帮助助手方法。

<a href="@(Url.Action(ViewBag.actionName, ViewBag.controllerName, new { page = i }) + ViewBag.routeValues)">page i</a>

会翻译成

<a asp-controller="@ViewBag.actionName" asp-action="@ViewBag.controllerName" asp-route-id = "@i">page i</a>

" asp-route"可以是路由参数或查询参数(如果给定的操作没有这样的路由参数(。因此,asp-route-xyz="abc"会将?xyz=abc添加到URL。

最新更新