MVC6路由选择错误的动作

时间:2016-01-28 12:00:20

标签: asp.net-core-mvc

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

当我点击链接时,它会转到/ 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?}");


        });

1 个答案:

答案 0 :(得分:0)

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

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

<a asp-controller="Links" asp-action="Canvas" asp-route-param1="1" asp-route-param2="2">View</a>