首页 新闻 会员 周边

Asp.MVC 3/4 如何设置默认页面?

0
悬赏园豆:50 [已关闭问题] 关闭于 2014-03-05 15:52

在项目中有在Web层根目录建一个index.html的文件,

IDE调试就设定起始页为index.html。可以启动就是这个页面。

但是放到IIS中 就是无法设定默认页。其实就是希望在访问域名的时候 www.xxx.com 可以访问 index.html这个页面 。

 

 

薛凯凯圆滚滚的主页 薛凯凯圆滚滚 | 初学一级 | 园豆:36
提问于:2014-01-24 18:37
< >
分享
所有回答(5)
0

设置路由,你只要创建默认的mvc项目,然后在iis发布成功,就直接有默认页了。

幻天芒 | 园豆:37175 (高人七级) | 2014-01-24 20:25

我觉得你的回答太坑了!我还得这样才有默认页!那还有意义吗?

支持(0) 反对(0) 薛凯凯圆滚滚 | 园豆:36 (初学一级) | 2014-01-24 20:49

@薛凯凯凯凯凯: 设置路由。路由是至上而下匹配的,只要有一个匹配成功了,那么就能继续往下了。借用楼下的路由配置:

routes.MapRoute(
                "Default", // 路由的名称(这个意义不大,随便写)
                "{controller}/{action}/{id}", // 带参数的匹配规则(这里描述了你的url的规则,如http://localhost:8080/Home/Index,那么第一个/之后是controller,第二个/后是action,再看http://localhost:8080,这个时候没有controller和action,想想Framework4.0方法的默认参数,没有的时候采用你下面设置的默认值)
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 默认参数,即当不输入时间

其实我看你的问题,更多的是发布到iis发布错误了,这个和webForms的发布稍微有点不同。
支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2014-01-25 12:25

@幻天芒: 按你这样说我要访问这个页面 http://localhost:8080/index.html 还没有匹配的路由呢!这个页面实际上已经脱离路由了。我在访问这个页面的时候 我的路由配置根本没有这个路由配置。但是我还是可以访问的。我还是觉得可以不通过路由就能访问,不在规则中的页面。你觉得呢?

支持(0) 反对(0) 薛凯凯圆滚滚 | 园豆:36 (初学一级) | 2014-01-25 12:33

@薛凯凯凯凯凯: 静态页面不走路由...

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2014-01-25 19:20
0

楼上说的对,MVC 的默认页是在路由中设置的。

魔多 | 园豆:1015 (小虾三级) | 2014-01-25 08:31

还是拿出证据来说明 才有说服力

支持(0) 反对(0) 薛凯凯圆滚滚 | 园豆:36 (初学一级) | 2014-01-25 08:47
0

楼上说的对 

逆心 | 园豆:160 (初学一级) | 2014-01-25 08:36

还是拿出证据来说明 才有说服力

支持(0) 反对(0) 薛凯凯圆滚滚 | 园豆:36 (初学一级) | 2014-01-25 08:47

@薛凯凯凯凯凯: 

            routes.MapRoute(
                "Default", // 路由的名称
                "{controller}/{action}/{id}", // 带参数的匹配规则
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 默认参数,即当不输入时间的处理方法
            );

  MVC的默认页,其实是默认路由设置启动哪一个Controller的哪一个Action,在根目录的Global.asax.cs里面设置。是MVC项目里面的路由。

支持(0) 反对(0) 逆心 | 园豆:160 (初学一级) | 2014-01-25 09:03

@阿军 - 逆心: 有没有官方的解释?

支持(0) 反对(0) 薛凯凯圆滚滚 | 园豆:36 (初学一级) | 2014-01-25 10:22

@薛凯凯凯凯凯: 木有喔

支持(0) 反对(0) 逆心 | 园豆:160 (初学一级) | 2014-01-25 10:43
0

如果你在项目中使用到域Area的话,需要在路由里面将这个域的命名空间添加进去。至于说MVC 的默认页是在路由中设置的的官方解释,你自己用MVC2建一个项目测试(MVC2建项目时会默认生成一个,这时直接运行就行了,MVC3中新建项目的时候没有)看看就知道了,这就是最好的解释。

mczxmin | 园豆:196 (初学一级) | 2014-01-27 10:27

你的意思是说 M2 是可以有默认页的 到了M3就 改掉了 是吗?

支持(0) 反对(0) 薛凯凯圆滚滚 | 园豆:36 (初学一级) | 2014-01-27 11:16
0

这个问题跟原理有关,mvc的项目是采用razor路由,跟以前的web form运行机制有着根本的不同,所以你说的这种情况根本就不可能实现,即使能实现,也是歪门邪道去间接实现.

你得问问自己,为什么会有这种需求.如果仅仅是想显示index.html页的内容,那么你可以修改一下mvc模式下默认的首页,如Home控制器下的Index.cstml即可

大浪淘沙 | 园豆:57 (初学一级) | 2014-02-20 14:00

那请问下MVC模式下如何默认首页~

这个问题正是我想知道的

我的首页是不在Views文件夹里面的。就在Web项目根目录下。如何让应用程序启动就访问这个文件呢?

不要通过Home控制器再重定向。

支持(0) 反对(0) 薛凯凯圆滚滚 | 园豆:36 (初学一级) | 2014-02-20 14:05

@薛凯凯凯凯凯: mvc的模式就是将iis请求转给控制器,控制器来决定哪个视图来展现,所以肯定要经过控制器的,
如果你非得把它放在外面,很麻烦,需要重写mvc的视图引擎,改变查找视图的路径,并且,改动后你还得将index.html改造成视图文件形式

我的意思是你把index.html页面内容覆盖掉View/Index.cshtml就行了

支持(0) 反对(0) 大浪淘沙 | 园豆:57 (初学一级) | 2014-02-20 14:12

@大浪淘沙: 好的 你意思其实就是用Vidws/Home/Index.cshtml 这个文件是吧。其实我也知道用这个文件可以。我提问是想知道如何不用这个,一开始先不经过路由,访问控制器时再去走路由

支持(0) 反对(0) 薛凯凯圆滚滚 | 园豆:36 (初学一级) | 2014-02-20 14:15

@薛凯凯凯凯凯: 上面已经说了,原理,iis请求转给控制器,这块不是你控制得了的,这条路根本就不通,你就别还往南墙撞了

支持(0) 反对(0) 大浪淘沙 | 园豆:57 (初学一级) | 2014-02-20 14:24

@大浪淘沙:  难道新版本的新特性也不行吗?One Asp.Net 糅合 Web Forms,MVC,Web API 在一个项目中。

支持(0) 反对(0) 薛凯凯圆滚滚 | 园豆:36 (初学一级) | 2014-02-20 14:29

@薛凯凯凯凯凯: 没接触过,不清楚

支持(0) 反对(0) 大浪淘沙 | 园豆:57 (初学一级) | 2014-02-21 11:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册