在IIS6上部署MVC2网站(续篇)
根据上一篇所描述的方法去配置,在后来碰到了不少麻烦,主要的麻烦就是View中链接的问题。
为了适应本地调试,我配置了两个路由规则:
routes.MapRoute(
"Default.Mvc",
"{controller}.mvc/{action}/{value}",
new { controller = "users", action = "index", value = 1 }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{value}",
new { controller = "users", action = "index", value = 1 }
);
这样一来,“http://localhost:7078/users.mvc/index”和“http://localhost:7078/users/index”都可以正常显示了。
但是我发现当我用“http://localhost:7078/users/index”来访问的时候,页面上却有这样的链接:http://localhost:7078/users.mvc/Edit/user1
这并非我所期待的,我所期待的链接应该像这样:http://localhost:7078/users/Edit/user1
而它却也把“mvc”也带上了,这十分令我迷惑,经过查阅资料,我才知道原来ActionLink生成链接也是有规则的,这里具体就不展开了,感兴趣的话可以看看这篇博文:
http://www.cnblogs.com/P_Chou/archive/2010/11/08/details-asp-net-mvc-03.html
总之我的做法有问题!
经过研究MVC路由规则,我修改了我的路由规则配置:
routes.MapRoute(
"Default.Mvc",
"{controller}.{mvcflag}/{action}/{value}",
new { controller = "users", action = "index", value = 1 },
new { mvcflag="mvc"}
);
routes.MapRoute(
"Default",
"{controller}/{action}/{value}",
new { controller = "users", action = "index", value = 1 }
);
把“mvc”作为一个参数,我想这样在生成超链接的时候就应该没什么问题了,可事实上这样做也并没有解决问题,因为我发现生成的链接中,如果Controller发生改变,参数就被忽略,像我这样想“恒稳”地带上mvc这个参数去生成链接是很难的了。比如我当前访问页是:http://localhost:7078/users.mvc/index/1
当前Controller是users,Action是index,会生成下面这些Link:
http://localhost:7078/users.mvc/index/2 (Controller和Action都没变,mvc参数还是带上的)
http://localhost:7078/users.mvc/Edit/user2 (Controller没变,Action变了,貌似也会带上mvc参数,还行)
http://localhost:7078/App (Controller变了,mvc参数丢了)
想来想去终究没有什么完美的办法,看来还是得从IIS着手,后来发现居然相当简单,唉,弯路走得够多的了。上图:
这样一来就OK了,也不需要添加什么路由规则了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人