我无法在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中,它生成了我的网址:
/主页/列表页面= 5&安培;搜索= ABC
在ViewBag.routeValues中,我传递了其他参数,例如: search = abc&amp; active = true 并将其粘贴到网址&#39;之后的网址参数
我认为我不能使用标记帮助程序和&#39; asp-route&#39; - 那我该怎么办?
好的 - 我需要将ViewBag转换为字符串:
<a href="@(Url.Action((string)ViewBag.actionName, (string)ViewBag.controllerName, new { page = i }) + (string)ViewBag.routeValues)">page i</a>
答案 0 :(得分:5)
您应首先阅读ASP.NET Core Documentation以了解哪些代码帮助程序以及如何使用它们。
在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
添加到网址中。