RouteData.Values - PullRequest
       6

RouteData.Values

0 голосов
/ 10 марта 2012

HttpContext.Current.Request.RequestContext.RouteData.Values ​​["controller"]. ToString () Действительно возвращает текущее имя контроллера, но возвращает его как пользовательский тип.

Например, мое приложение содержит контроллер «ImageGallery», и если пользователь набирает http://localhost/imagegallery, чтобы получить его, тогда я получаю «imagegallery» из RouteData.Values ​​вместо «ImageGallery».

Как я могу получить оригинальное имя контроллера?

Ответы [ 2 ]

0 голосов
/ 11 марта 2012

Возможно, вы сможете получить фактический экземпляр CLR вашего контроллера и получить имя оттуда, на ваш взгляд ...

@if (this.ViewContext.Controller is MyController)
{
}

и, возможно, убрать часть "Controller" из его имени ...как

this.ViewContext.Controller.GetType().Name.Replace("Controller", "")

PS: используется .Replace(string, string) для простоты этого поста, но, вероятно, лучше использовать вызов .Substring(int, int).

РЕДАКТИРОВАТЬ: Вы также можете получить текущий контроллер из контекста Controller, если бы вы не были в представлении (хотя вы были бы в контроллере, в этом случае this.GetType() сделал бы это.

0 голосов
/ 10 марта 2012

Вы получаете то, что ввел пользователь, потому что обычно это не имеет значения (, если вы не Linux / Unix ). Однако, если ваша проблема связана с маршрутами, которые не разрешаются должным образом, то, возможно, этот вопрос StackOverflow это то, что вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...