Можно ли использовать URL без имени функции контроллера в ASP .NET MVC? - PullRequest
5 голосов
/ 03 августа 2009

Код по умолчанию, который VS генерирует для HomeController:

<HandleError()> 
Public Class HomeController Inherits System.Web.Mvc.Controller

    Function Index() As ActionResult
        ViewData("Message") = "Welcome to ASP.NET MVC!"

        Return View()
    End Function

    Function About() As ActionResult
        Return View()
    End Function
End Class

Допустим, я хочу создать другой URL для страницы about без изменения имени метода. Я пробовал:

'
' GET: /Home/Aboutblah

Но это не работает. Когда я перехожу на http://localhost:1957/Aboutblah,, я получаю 404 от сервера ASP .NET.

Следовательно, мне было интересно, действительно ли блок текста «GET» что-то делает и можно ли возиться с URL-адресами, не углубляясь в файл ASAX.

Ответы [ 4 ]

4 голосов
/ 03 августа 2009

Также вы можете украсить метод атрибутом:

[ActionName("Aboutblah")]

Джеймс

РЕДАКТИРОВАТЬ Я только что заметил, что вы используете VB. Вам придется перевести на VB, может быть:

<ActionName("Aboutblah")>

Также да, комментарии, т.е.:

' Get /Home/Index

только что - комментарии.

2 голосов
/ 03 августа 2009

Вам нужно будет изменить код, который устанавливает маршруты.

Если это всего лишь один раз, вы можете настроить конкретный маршрут для этого URL.

Следующее явным образом отобразит URL «Home / aboutBlah» на действие HomeController.About action и использует стандартный шаблон URL-адреса контроллера / маршрута действия для любых других URL:

RouteTable.Routes.MapRoute ("CustomAboutUrl", "Home / aboutBlah", new {controller = "Home", action = "About"});

RouteTable.Routes.MapRoute ("По умолчанию", "{controller} / {action}");

1 голос
/ 03 августа 2009

Посмотрите на URL Routing , вы должны быть в состоянии точно определить альтернативные URL для действий контроллера. :)

0 голосов
/ 03 августа 2009

Самый простой способ - создать функцию в контроллере с именем AboutBlah. Вы знаете, как это:

Public Function AboutBlah() AS ActionResult
    return View()
End Function

Тогда вы можете иметь представление с именем AboutBlah.

Нет необходимости устанавливать маршрут или украшать функцию с помощью атрибута. Вы даже можете удалить функцию «О программе» или настроить ее так, чтобы окно «AboutBlah» отображалось так:

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