Атрибут 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, содержащий "мое дружественное имя" для контроллера, будет использовать ваш новый маршрут.


оформить заказ этот пост, особенно там, где речь идет о форматирование маршруту.