我想在网址中使用破折号来分隔单词。所以代替:

/MyController/MyAction

我想要:
/My-Controller/My-Action

这可能吗?

最佳答案

您可以像这样使用ActionName属性:

[ActionName("My-Action")]
public ActionResult MyAction() {
    return View();
}

请注意,然后您需要将您的View文件称为“My-Action.cshtml”(或适当的扩展名)。您还需要在任何Html.ActionLink方法中引用“my-action”。

对于 Controller ,没有这么简单的解决方案。

编辑:MVC5更新

全局启用路由:
public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapMvcAttributeRoutes();
    // routes.MapRoute...
}

现在使用MVC5,属性路由已被吸收到项目中。您现在可以使用:
[Route("My-Action")]

关于行动方法。

对于 Controller ,您可以应用RoutePrefix属性,该属性将应用于该 Controller 中的所有操作方法:
[RoutePrefix("my-controller")]

使用RoutePrefix的好处之一是URL参数也将传递给任何操作方法。
[RoutePrefix("clients/{clientId:int}")]
public class ClientsController : Controller .....

剪..
[Route("edit-client")]
public ActionResult Edit(int clientId) // will match /clients/123/edit-client

关于asp.net-mvc - Asp.Net MVC:如何在网址中启用破折号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30310/

10-12 00:41