[英]ASP.NET MVC Route All Requests
我們需要根據進入網站的“路線”來展示具有相同主題(和不同數據)的同一網站。
注意:這些不是用戶可以選擇的動態主題。 某些客戶將通過第三方鏈接來訪問,該鏈接始終將他們指向其中一個URL。
還需要在從UI到數據庫的查詢中使用值trade / public(以根據進入站點的路線拉回變化的數據)。
那我有什么選擇呢?
創建自定義視圖引擎,該引擎使用querystring(mvc路由參數)值加載相關的母版頁。
在每個控制器操作中,獲取參數(貿易/公共等)並將其傳遞給數據庫查詢。
public ActionResult List(string siteType){
products.ListFor(siteType);
}
這里的問題是必須更改每個控制器操作以傳遞查詢字符串值。
這也帶來了一個問題,即global.asax中定義的任何路由都必須接受參數。
我想知道是否還有另一種方式,也許是自定義控制器庫和主機名的某種組合,例如trade.example.com,public.example.com?
首先定義路由:
routes.MapRoute(
"Default", // Route name
"{siteType}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
然后在控制器中使用它:
RouteData.Values["siteType"]
這個怎么樣:
創建所有控制器都繼承自的基本控制器
添加一個屬性:public string SiteType {get; 保護集; }
在調用任何動作之前,添加一個OnActionExecuting方法進行設置,例如
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//use filterContext to set SiteType somehow, e.g. you can look at the URL or the route data
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.