Атрибут ControllerName C# MVC 4
Я работаю над предоставлением дружественных имен для моих контроллеров MVC 4, и я хочу сделать что-то вроде [ActionName="My-Friendly-Name"]
стиль, но для всего контроллера.
Я не мог найти никакой информации о таком атрибуте, так как я мог бы это сделать? Кроме того, мне нужно будет добавить новый MapRoute для его обработки?
EDIT:
например, я хотел бы направить следующий 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);
}
}
}
3 ответов
обновление
пожалуйста, посмотрите на эту публикацию, я думаю, что они решили проблему, о которой вы говорите.
пожалуйста, дайте мне знать, если это вам поможет.
добавьте пользовательский маршрут, который будет соответствовать вашему конкретному имени:
routes.MapRoute(
"MyCustomRoute",
"My-Friendly-Name/{action}/{id}",
new { controller = "ReportsController", action = "Index", id = "" }
);
теперь каждый url, содержащий "мое дружественное имя" для контроллера, будет использовать ваш новый маршрут.
оформить заказ этот пост, особенно там, где речь идет о форматирование маршруту.