C#MVC 4 ControllerName属性

我正在为我的MVC 4控制器提供友好的名称,我想做一些像[ActionName="My-Friendly-Name"]样式的东西,但对于整个控制器。

我找不到关于这种属性的任何信息,那么我该如何去做呢? 另外,我需要添加一个新的MapRoute来处理它吗?

编辑:

例如,我想路由以下url:

  http://mysite.com/my-reports/Details/5 

被路由到以下控制器:

 [ControllerClass="my-reports"] // This attribute is made up. I'd like to know how to make this functionality public class ReportsController : Controller { // // GET: /Reports/ public ActionResult Index() { return View(); } public ViewResult Details(int id) { Report report = db.Reports.Single(g => g.Id == id); return View(report); } public ActionResult Create() { return View(); } [HttpPost] public ActionResult Create(Report item) { try { if (ModelState.IsValid) { item.Id = Guid.NewGuid(); _context.Reports.AddObject(item); _context.SaveChanges(); return RedirectToAction("Index"); } return View(item); } catch (Exception) { return View(item); } } 

}

我不知道你的问题是否有答案,但即使有问题,为什么世界上你会做这样的事情呢? 为什么不做标准方式:调用控制器类任何你喜欢的东西(只要它有意义)并让它为你调用框架? 为什么要创建两个人工命名约定并在它们之间映射? 我认为没有一个收益,但多重利弊。 比如 – 它更难阅读,更难维护,更难理解,它也是微不足道的,但仍然是对性能的压力……

更新

请看这篇文章,我认为他们确实解决了你所说的问题。

  • 如何在ASP.NET MVC中实现动态控制器和动作方法?

如果对您有任何帮助,请告诉我。

添加与您的特定名称匹配的自定义路线:

 routes.MapRoute( "MyCustomRoute", "My-Friendly-Name/{action}/{id}", new { controller = "ReportsController", action = "Index", id = "" } ); 

现在,包含控制器“My-Friendly-Name”的每个URL都将使用您的新路由。

查看这篇文章 ,特别是它谈论路由格式