簡體   English   中英

在多租戶應用程序中基於路由參數自動設置Controller屬性

[英]Automatically set Controller properties based on route parameters in multi-tenant application

我目前正在開發一個內容托管的多租戶應用程序,該應用程序將具有管理員可訪問的一組頁面和一組面向公眾的頁面。 我不必擔心管理員可訪問頁面,因為我將擁有一個供所有用戶登錄到管理員區域的管理員URL。 我所關心的問題是面向公眾的頁面。

如果我們想象管理頁面允許您創建和管理一組按學校分組的大學網站的內容,而面向公眾的頁面僅顯示該內容。

我設置了以下方法來處理訪問面向公眾的頁面:

routes.MapRoute(
            name: "Site",
            url: "{schoolName}/{collegeName}/{controller}/{action}/{id}",
            defaults: new { schoolName = "Oxford", collegeName = "Balliol",  controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

這可以正常工作,並且可以毫無問題地調用以下控制器操作:

public class HomeController
{
    public ActionResult Index(string schoolName, string collegeName)
    {
        return View();
    }
}

但是我想知道是否有一種方法可以使此方法工作而不必總是在控制器操作中接受schoolNamecollegeName作為參數? 如果我在為面向公眾的頁面創建的每項操作中始終必須接受這些參數,我會看到它成為一個問題。

我正在考慮創建一個PublicFacingController ,所有面向公眾的頁面都將繼承該PublicFacingController ,其中包含學校名稱和大學名稱的屬性。 但是我不確定如何將它們填充到派生控制器中而不將其作為參數傳遞給操作。

您可以在基本控制器中訪問Controller.Request屬性,以獲取學校和大學的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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