MVC路由配置成类似微博、博客园那种个性域名解决方案
weibo.com/username/其他参数
cnblogs.com/username/其他参数
主机头/地区or用户名/其他参数
園裡沒有"cnblogs.com/username/"的route吧..
這個"cnblogs.com/u/username/"的話
不就是預設的route
http://www.cnblogs.com/wuball/
http://www.cnblogs.com/wuball/p/4231343.html
有啊。。
@wuball:
http://www.cnblogs.com/wuball/
routes.MapRoute(
name: "userpage",
url: "/{userid}",
defaults: new { controller = "XXX", action = "user", userid = UrlParameter.Optional }
);
http://www.cnblogs.com/wuball/p/4231343.html
routes.MapRoute(
name: "article",
url: "{userid}/{action}/{articleid}.html",
defaults: new { controller = "XXX", action = "article", userid = UrlParameter.Optional, articleid = UrlParameter.Optional }
);
我只是就URL寫route
園子一定有更完整的規劃,不可能跟我寫的一樣
另外還有順序的問題
@RosonJ:
这样控制器的代码和action是怎样的?userid怎么传参
@wuball:
userid那個其實跟default很類似
看一下default:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
預設的Action:
public ActionResult Index(string id)
{
//...
}
其實可以想得出來如何傳參數吧
剩下就是撈取資料跟選擇view而已
@RosonJ:
那加个userid的话每个action就要加个userid参数了,不知道理解的对不对。。谢谢你
@wuball:
那加个userid的话每个action就要加个userid参数了
有個小錯誤,Route結果只對應到一個Action,
defaults: new { controller = "XXX", action = "user", userid = UrlParameter.Optional }
預設也寫死了user(...沒寫好,應該大寫開頭)這個Action,
怎麼會有多個Action呢
直接在web.config中的appSettings中配置一个节点就是了,在控制器中用ConfigurationManager.AppSettings[""]获取到,然后拼接
不知道是不是你想的那种