【问题标题】:MVC6 route choosing wrong actionMVC6 路由选择错误的动作
【发布时间】:2016-01-28 12:00:20
【问题描述】:

我正在尝试制作一个包含多个参数的简单网页。

当我点击链接时,它会将我带到 /Links/Index/1/2 而不是预期的 /Links/Canvas/1/2。

控制器:

public class linksController : Controller
{
public IActionResult Index(int? id)
    { ...... return View() }
public IActionResult Canvas(int param1, int param2)
    { ...... return View() }
}

链接失效的页面:

<a asp-route="newroute" asp-route-param1="1" asp-route-param2="2">View</a> 

Startup.cs:

 app.UseMvc(routes =>
        {

            routes.MapRoute(
        name: "newroute",
        template: "{controller=Links}/{action=Canvas}/{param1}/{param2}");

            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");


        });

【问题讨论】:

    标签: asp.net-core-mvc


    【解决方案1】:

    您在路由中指定的默认值仅在尚无值时使用,但是当您在此上下文中使用路由时,这些值将填充您当前正在查看的页面的控制器和操作值,而不是比默认值。

    您可以通过将代码更改为如下所示来覆盖控制器和操作值:

    &lt;a asp-controller="Links" asp-action="Canvas" asp-route-param1="1" asp-route-param2="2"&gt;View&lt;/a&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      • 2015-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多