mvc,首页静态页,无静态页走路由,如何设置?谢谢

WeekZero 2014-04-29 10:12:59
mvc3里,首页是生成的静态首页,怎么设置能够实现灵活一点,存在静态页是访问静态页,不存在静态页时走路由页面。

如:
当存在静态页index.html时访问www.test.com时运行的是index.html
当index.html页面不存在或者临时删除了,执行路由规则下的动态页面,如www.test.com运行的是www.test.com/home/index,
不是url跳转。

实验了很多方法,只能实现固定的一种形式,不能灵活

熟悉mvc的朋友,谢谢了
...全文
788 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
mylogic 2016-04-12
  • 打赏
  • 举报
回复
最傻最简单的方法: routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); 以上默认什么都不用变,在Index的动作里直接写: public ActionResult Index() { return Redirect("你要跳转的静态页.html"); } public ActionResult 你要跳转的静态页() { //这个action,你靠他来生成静态页好了 return View(); } 每次只访问静态页,这样不就行了?至于静态页什么时候生成,你自己考虑一下吧,我觉得要么只访问静态页,要么只用MVC视图。
文字的吻 2014-05-09
  • 打赏
  • 举报
回复
引用 13 楼 zhujiazhi 的回复:
个人感觉,那就需要每次都路由,在home/index的action上面加上一个filter,在这个fiter里面进行判断,如果存在就直接返回index.html内容的,不再继续执行action里面的操作的,如果不存在就接着做action里面的操作的,有一些页面的缓存就是这么实现
毕业设计求助,淘宝都没人会啊,我快走投无路了。。。。价格好商量,用mvc做的物流管理,网上下的别人的,界面什么的都做好了,就是数据交换的地方有问题。QQ:18696766524
文字的吻 2014-05-09
  • 打赏
  • 举报
回复
引用 2 楼 WeekZero 的回复:
搜索了很多方法,总不能灵活处理,因为很多时候可能把静态页index.html删除了,这时访问时是路由的路径。 routes.RouteExistingFiles = false; if (Context.Request.FilePath == "/") Context.RewritePath("index.html"); iis中也设置了默认index.html最优先 当index.html存在时没问题,当不存在时就找不到页面了,不能自动去走路由规则
毕业设计求助,淘宝都没人会啊,我快走投无路了。。。。价格好商量,用mvc做的物流管理,网上下的别人的,界面什么的都做好了,就是数据交换的地方有问题。QQ:18696766524
WeekZero 2014-04-29
  • 打赏
  • 举报
回复
哈哈,实现了 在protected void Application_BeginRequest(Object sender, EventArgs e)增加 if (Context.Request.FilePath == "/") Context.RewritePath("index.html"); 在路由上再用上你的这个路由规则:routes.MapRoute( "html", // Route name "{action}.html", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults , new[] { "aWeb.Controllers" }//默认命名空间 ); 在访问www.test.com时有index.html就是index.html,没有时就自动路由规则去了 感谢zhujiazhi
WeekZero 2014-04-29
  • 打赏
  • 举报
回复
这样也太麻烦了些,网站运行很久了,这是临时增加一个静态页功能,还有么有更直接一点的。避免改很多代码实现。 总感觉经过一些配置就可以实现
zhujiazhi 2014-04-29
  • 打赏
  • 举报
回复
个人感觉,那就需要每次都路由,在home/index的action上面加上一个filter,在这个fiter里面进行判断,如果存在就直接返回index.html内容的,不再继续执行action里面的操作的,如果不存在就接着做action里面的操作的,有一些页面的缓存就是这么实现
WeekZero 2014-04-29
  • 打赏
  • 举报
回复
是的,就是这个意思
zhujiazhi 2014-04-29
  • 打赏
  • 举报
回复
你是想实现,输入www.test.com的时候, 如果index.html存在,就输出index.html的内容 不存在就输出/home/index对应的view的内容, 但url里面的地址都显示的是www.test.com?
WeekZero 2014-04-29
  • 打赏
  • 举报
回复
我明白你的意思了,这样是可以,不过我是www.test.com,首页的没有添加index.html,因为是要给已经存在的项目,首页的路径都是www.test.com 你的方法是www.test.com/index.html,这是可以 我现在需要解决,www.test.com的时候是www.test.com/index.html,不存在的时候是www.test.com/home/index
WeekZero 2014-04-29
  • 打赏
  • 举报
回复
引用 6 楼 WeekZero 的回复:
在静态页面存在时,访问www.test.com是index.html页面 在index.html不存在时,访问www.test.com是运行的路由,也就是www.test.com/home/index的页面,但这里不是url的跳转,是运行的页面自动灵活处理
我现在有一个默认路由,如下: routes.MapRoute( "Default", // 路由名称 "{controller}/{action}/{id}", // 带有参数的 URL new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值 , new[] { "aWeb.Controllers" }//默认命名空间 ); 是在它之前再放一个:routes.MapRoute( "html", // Route name "{action}.html", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); 这可以吗
WeekZero 2014-04-29
  • 打赏
  • 举报
回复
routes.IgnoreRoute(""); //访问根目录时不经过路由,响应IIS设置的默认页面 当根目录下index.html不存在时,如何再去路由呢 ?
zhujiazhi 2014-04-29
  • 打赏
  • 举报
回复
所以重新写了一个路由的,访问的地址都是www.test.com/index.html,这样,如果存在就直接访问index.html,如果不存在,就会进入Homecontroller的index的 action,访问的地址是不变的,会自动检测到,根本就没有跳转的
WeekZero 2014-04-29
  • 打赏
  • 举报
回复
在静态页面存在时,访问www.test.com是index.html页面 在index.html不存在时,访问www.test.com是运行的路由,也就是www.test.com/home/index的页面,但这里不是url的跳转,是运行的页面自动灵活处理
zhujiazhi 2014-04-29
  • 打赏
  • 举报
回复
因为在mvc中,默认是先找存在的文件的,所以可以利用这个来实现 在global中修改路由(这里只实现一个简单的路由,专门实现这个问题,实际情况要根据具体情况而配置) routes.MapRoute( "html", // Route name "{action}.html", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); 在浏览器里面输入 http://localhost:24195/index.html 如果这个index.html存在,则会直接显示这个index.html页面, 如果index.html不存在,则会进入到HomeController下面的index的action
WeekZero 2014-04-29
  • 打赏
  • 举报
回复
index.html文件不存在时,iis中设置的index.html的默认页优先级为什么不起作用啊,如 <add value="index.html" /> <add value="Default.htm" /> <add value="Default.asp" /> <add value="index.htm" /> <add value="iisstart.htm" /> <add value="default.aspx" /> 是不是路由在这个默认页之前执行了
WeekZero 2014-04-29
  • 打赏
  • 举报
回复
routes.IgnoreRoute(""); 这个方法也试了,当根目录下index.html存在时没问题,当文件不存在时就报错了,能不能在不存在时就去路由了
WeekZero 2014-04-29
  • 打赏
  • 举报
回复
搜索了很多方法,总不能灵活处理,因为很多时候可能把静态页index.html删除了,这时访问时是路由的路径。 routes.RouteExistingFiles = false; if (Context.Request.FilePath == "/") Context.RewritePath("index.html"); iis中也设置了默认index.html最优先 当index.html存在时没问题,当不存在时就找不到页面了,不能自动去走路由规则
呆子罗 2014-04-29
  • 打赏
  • 举报
回复
IIS文档设置可否?

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧