使用最新的.net6 开发mvc的应用程序,自动生成代码的功能还是那么方便。不过跟之前的自动生成的代码有了一些变动。
<td> <a asp-action="Edit" asp-route-id="@item.Id">修改</a> | <a asp-action="Details" asp-route-id="@item.Id">详情</a> | <a asp-route="news" asp-controller=“news” asp-action="index" id="@item.Id">新闻点</a> <a asp-action="Delete" asp-route-id="@item.Id">删除</a> </td>
我当前是在usercontroller的试图下,想要在这里跳转到另外一个action的index中,于是在自动生成的代码中加了一句。
大家看第二行代码 他自动生成的代码中指定了asp-action和aps-route-id
他们分别是跳转的action和跳转的参数id
如果我想跳转到另一个controller中,是不是指定route 为news就行了呢,写完以后运行代码,系统提示了这样的错误:
InvalidOperationException: Cannot determine the 'href' attribute for <a>. The following attributes are mutually exclusive: asp-route asp-controller, asp-action asp-page, asp-page-handler
意思是 以下的这些属性是互斥的:
asp-route asp-controller, asp-action asp-page, asp-page-handler
就是说
asp-route asp-controller不能同时指定, asp-action asp-page不能同时指定。
明白了原因就好办了。
在代码中把asp-toute属性去掉
<td> <a asp-action="Edit" asp-route-id="@item.Id">修改</a> | <a asp-action="Details" asp-route-id="@item.Id">详情</a> | <a asp-controller="news" asp-action="index" id="@item.Id">新闻点</a> <a asp-action="Delete" asp-route-id="@item.Id">删除</a> </td>
然后运行程序,不再有异常。OK,问题解决。