如何在ASP.NET MVC中创建ActionLink到自定义路由?

Yul*_*ian 4 asp.net-mvc routing asp.net-mvc-5

我在一个区域内有一条自定义路线:

[RouteArea("MyArea")]  
public class MyController: Controller
{
    [Route("~/my-action")]
    public ActionResult MyAction()
    {
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

在添加RouteRouteArea属性之前,我通过以下路由访问了此操作:

~/MyArea/MyController/MyAction
Run Code Online (Sandbox Code Playgroud)

现在我添加了这个属性,我只能通过这个来访问它:

~/my-action
Run Code Online (Sandbox Code Playgroud)

我曾经有一个指向这个动作的ActionLink,它看起来像这样:

@Html.ActionLink("Link To My Action", "MyAction", "My", new { Area = "MyArea" }, new { })
Run Code Online (Sandbox Code Playgroud)

现在这个ActionLink不再有效了.我该如何解决?

Yul*_*ian 8

我提出了以下解决方案:

我在我创建的路线上添加了一个名字.

[Route("~/my-action", Name = "CustomRoute")]
public ActionResult MyAction()
Run Code Online (Sandbox Code Playgroud)

然后我使用RouteLink辅助方法,而不是像这样的ActionLink方法:

@Html.RouteLink("Link To My Action", "CustomRoute")
Run Code Online (Sandbox Code Playgroud)

因此,RouteLink方法的第一个参数是链接的文本,第二个参数是路径的名称 - 与您在Route属性中放置的名称相同.