Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用routes.maproute和参数_C#_Asp.net_Asp.net Mvc 3_Asp.net Mvc 4 - Fatal编程技术网

C# 使用routes.maproute和参数

C# 使用routes.maproute和参数,c#,asp.net,asp.net-mvc-3,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc 3,Asp.net Mvc 4,我有一个参数要用作URL的默认结尾,但它当前是一个参数。我希望它始终指向主控制器和索引操作,但/将成为pageName参数 例如,我想要 http://localhost:18792/?pageName=HomePage 可通过以下方式访问: http://localhost:18792/HomePage 这是我当前的路线。地图路线: routes.MapRoute( name: "Default", url: "{controll

我有一个参数要用作URL的默认结尾,但它当前是一个参数。我希望它始终指向主控制器和索引操作,但/将成为pageName参数

例如,我想要

http://localhost:18792/?pageName=HomePage
可通过以下方式访问:

http://localhost:18792/HomePage
这是我当前的路线。地图路线:

routes.MapRoute(
                name: "Default",
              url: "{controller}/{action}/{pageName}",
                defaults: new { controller = "Home", action = "Index", pageName = "HomePage" }
            );

为此,您必须为每个页面创建一个路由。不要修改默认路线。添加新路线:

routes.MapRoute(
    name: "HomePage",
    url: "HomePage",  
    defaults: new { controller = "Home", action = "HomePage" }
);
对于动态路由,您可以使用:

routes.MapRoute(
    name: "PageName",
    url: "{pageName}",  
    defaults: new { controller = "Home", action = "Index", pageName = "defaultPage" }
);
它将映射到~/defaultpage或~/homepage,并在主控制器中使用操作索引:

    public ActionResult Index(string pageName)
    {
        ViewBag.Message = pageName;
        return View();
    }

为此,您必须为每个页面创建一个路由。不要修改默认路线。添加新路线:

routes.MapRoute(
    name: "HomePage",
    url: "HomePage",  
    defaults: new { controller = "Home", action = "HomePage" }
);
对于动态路由,您可以使用:

routes.MapRoute(
    name: "PageName",
    url: "{pageName}",  
    defaults: new { controller = "Home", action = "Index", pageName = "defaultPage" }
);
它将映射到~/defaultpage或~/homepage,并在主控制器中使用操作索引:

    public ActionResult Index(string pageName)
    {
        ViewBag.Message = pageName;
        return View();
    }

但是,页面名是动态生成的。有没有办法告诉MVC,任何只有/string的页面都会通过自定义映射运行?添加了另一个选项,但这是有风险的,因为任何字符串都会尝试匹配到~/home/index/{pagename}-可能会生成大量404。不过,页面名是动态生成的。有没有办法告诉MVC,任何只有/string的页面都会通过自定义映射运行?添加了另一个选项,但这是有风险的,因为任何字符串都会尝试匹配到~/home/index/{pagename}-可能会生成大量404