我想在网址中使用破折号来分隔单词。所以代替:
/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/