我正在为我的MVC 4控制器提供友好的名称,我想要做一些类似[ActionName="My-Friendly-Name"]
的风格,但对于整个控制器。C#MVC 4 ControllerName属性
我找不到任何有关此属性的信息,那么我该如何去做呢?另外,我需要添加一个新的MapRoute来处理它吗?
编辑:
例如,我想路线下面的网址:
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);
}
}
}
原因是因为一些路由是基于存储在数据库中的值发生的(所以不要把url设置为'/ Items/5',这个url可以是'/ Media/Music/Somebody-to-Love '),这导致了一些特殊的复杂性,最简单的解决方法是允许与[ActionName]相同的功能,但对于控制器。如果没有解决方案,我必须找出另一种方法。我敢肯定,这只是我的第一个想法:) –
很酷,理解,请在我的答案看看更新。 –
我的一些客户更喜欢http://www.domain.com/produkter而不是http://www.domain.com/product。我不想在我的代码中拥有一个ProdukterController和混合瑞典语。我已经使用AttributeRouting解决了它,为我所有的控制器和操作创建自定义路由。 –