簡體   English   中英

ASP.NET MVC路由所有請求

[英]ASP.NET MVC Route All Requests

我們需要根據進入網站的“路線”來展示具有相同主題(和不同數據)的同一網站。

  • www.example.com/Trade
  • www.example.com/公共

注意:這些不是用戶可以選擇的動態主題。 某些客戶將通過第三方鏈接來訪問,該鏈接始終將他們指向其中一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM