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都将使用您的新路由。
查看这篇文章 ,特别是它谈论路由格式 。
- MVC 4 Razor – 创建动态DropDownList
- 如何配置Automapper以自动忽略具有ReadOnly属性的属性?
- 无法加载文件或程序集’EntityFramework,Version = 6.0.0.0,
- JsonConvert.DeserializeObject特殊字符未终止字符串。 预期分隔符:
- 使用ListBoxFor和DropDownListFor Helpers的ASP.NET MVC模型绑定
- 在ASP.Net MVC中使用DropDownList的最佳编程实践
- 如何使用Unity Dependecy Injection Web API实现Strategy / Facade模式
- 如何在ASP.NET MVC中启用跨源请求
- c#mvc model vs viewbag