通过属性路由

时间:2015-04-28 20:54:00

标签: c# asp.net asp.net-mvc asp.net-mvc-5 attributerouting

我在控制器中使用ASP.NET MVC 5属性路由。

[RoutePrefix("ControllerName")]
public class MyController : Controller
{
    [Route("ActionName")]
    public ActionResult Index()
    {
        return View();
    }
}

当我尝试像这样获取url(Controller.Url)

Url.Action("Index", "My")

我得到了

  

/我/索引

当我在View(它是WebViewPage.Url)中执行相同操作时,

@Url.Action("Index", "My")

我得到了

  

/ ControllerName / ActionName

如何实现/ ControllerName / ActionName?

2 个答案:

答案 0 :(得分:2)

如果你想从其他控制器构建url,你需要像这样使用UrlHelper类:

var urlHelper = new UrlHelper(ControllerContext.RequestContext);
var url = urlHelper.Action("Index", "My");

这将构建您想要的结果:/ ControllerName / ActionName

答案 1 :(得分:0)

试试这个:

Url.Action("Index", "My")

您需要在 Controller 之前仅使用部分作为控制器名称。对视图中的@Url.Action执行相同的操作。