URL отличается от имени представления ASP MVC 3

#asp.net-mvc #asp.net-mvc-3 #url-rewriting #url-routing

#asp.net-mvc #asp.net-mvc-3 #url-переписывание #url-маршрутизация

Вопрос:

Возможно ли добавить какие-либо метаданные в представление, чтобы URL-адрес отличался от имени представления?

Пример:

 [DisplayName("My-View")]
public ActionResult MyView()
{
   return View();
}
  

Как вы видите, я бы хотел, чтобы URL был www.mydomain.com/My-View не www.mydomain.com/MyView .

Я думаю, это можно отсортировать с помощью некоторой маршрутизации или перезаписи IIS, но для этого действительно должна быть какая-то метафункциональность.

Ответ №1:

Используйте ActionName вместо DisplayName : ActionNameAttribute

Этот атрибут позволит вам начать свое действие с числа или включить любой символ, который .net не разрешает в идентификаторе. Таким образом, вы можете получить хорошие URL-адреса без необходимости переписывать их другими методами.

Пример

 [ActionName("My-View")]
public ActionResult MyView()
{
   return View();
}
  

Комментарии:

1. Эй, pjvds, я только что попробовал это, но не могу заставить это работать, когда я вызываю указанное действие с помощью @Url.Action, он жалуется, что не может его найти, независимо от того, какое имя действия я ему даю (будь то My-View или MyView, чтобы придерживаться примера)

2. @Nieszka Смотрите этот пост о полном how a method becomes an action процессе: haacked.com/archive/2008/08/29 /…

Ответ №2:

 [ActionName("My-View")]
public ActionResult MyView()
{
    return View();
}