#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();
}