ASP.NET MVC中的主页

Max*_*sky 3 c# asp.net asp.net-mvc

我正在尝试ASP.NET MVC,但是,在阅读了一个庞大的教程后,我有点困惑.我理解控制器如何具有路由到URL的操作,但主页如何工作?主页是否有自己的控制器(例如"Home")没有动作?这听起来是正确的,但是如果没有Actions就实现了功能(没有Actions意味着没有调用View Engine的方法)?

换句话说,我的问题是:如何实现主页(根据控制器和视图)?你能提供样品代码吗?

Oma*_*mar 7

"Home"页面无非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
        );
Run Code Online (Sandbox Code Playgroud)

注意路线定义:

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

这条路线是一条"包罗万象"的路线,这意味着它将采用任何URL并将其分解为特定的控制器和动作和id.如果没有定义任何路由或其中一个路由,它将使用默认值:

new { controller = "NotHome", action = "NotIndex", id = "" }
Run Code Online (Sandbox Code Playgroud)

这说"如果有人访问我的应用程序,但未指定控制器或操作,我将重定向到NotIndex我的NotHome控制器的操作".我故意用"Not"来说明"Default.aspx","Index.html"的命名约定不适用于MVC路由.