根據上一篇所描述的方法去配置,在后來碰到了不少麻煩,主要的麻煩就是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”都可以正常顯示了。
如何在iis上發布網站。但是我發現當我用“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
tomcat部署靜態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:
怎么將.net mvc程序部署,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著手,后來發現居然相當簡單,唉,彎路走得夠多的了。上圖:
iis apache?
這樣一來就OK了,也不需要添加什么路由規則了。