Домашние страницы в ASP.NET MVC - PullRequest
3 голосов
/ 17 марта 2010

Я пробую ASP.NET MVC, но, прочитав огромный учебник, я немного растерялся. Я понимаю, как контроллеры имеют действия, на которые направляются URL-адреса, но как работают домашние страницы? Является ли домашняя страница собственным контроллером (например, «Домашний»), который не выполняет никаких действий? Это звучит правильно, но как эта функциональность реализована без Actions (без Actions означает, что нет методов, вызывающих View Engine)?

Другими словами, у меня такой вопрос: как реализованы домашние страницы (с точки зрения контроллеров и представлений)? Не могли бы вы предоставить образец кода ?

Ответы [ 3 ]

7 голосов
/ 17 марта 2010

Домашняя страница - не более чем произвольная Action в определенном Controller, который возвращает определенное View

Чтобы установить страницу по умолчанию "Домашняя страница" или, лучше сказать, страницу по умолчанию, необходимо изменить информацию о маршрутизации в файле Global.asax.cs:

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        AreaRegistration.RegisterAllAreas();

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "NotHome", action = "NotIndex", id = "" }  // Parameter defaults
        );

Обратите внимание на определение маршрута:

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "NotHome", action = "NotIndex", id = "" }  // Parameter defaults
        );

Этот маршрут является «универсальным», то есть он принимает любой URL-адрес и разбивает его на определенный контроллер, действие и идентификатор. Если ни один или один из маршрутов не определены, будут использоваться значения по умолчанию:

new { controller = "NotHome", action = "NotIndex", id = "" }

Это говорит: «Если кто-то посещает мое приложение, но не указал контроллер или действие, я собираюсь перенаправить их на действие NotIndex моего NotHome контроллера». Я специально добавил «Не», чтобы проиллюстрировать, что соглашения об именах «Default.aspx», «Index.html» не применяются к маршрутам MVC.

3 голосов
/ 17 марта 2010

Домашняя страница обычно соответствует действию / представлению по умолчанию на контроллере по умолчанию.

Таким образом, вы создадите, например, HomeController с действием Index и соответствующим представлением, а затем в ваших сопоставлениях маршрутов вы создадите маршрут по умолчанию, охватывающий все, что-то вроде этого:

routes.MapRoute(
    "Default",                                              
    "{controller}/{action}/{id}",                           
    new { controller = "Home", action = "Index", id = "" });
0 голосов
/ 17 марта 2010

Это зависит от того, что вы подразумеваете под «домашней страницей». Если вы имеете в виду страницу, которую видите при переходе к http://www.yoursite.com (без страницы или имени контроллера), то это контроллер индекса, который работает как любой другой, за исключением того, что вы не видите имя контроллера в URL .

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