在我的控制,我想建立以下服務:我可以在控制器的Initialize方法中訪問模型信息嗎?
private IAccountService _accountService;
private IDataSourceService _dataSourceService;
private IProductService _productService;
private ISequenceService _sequenceService;
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
}
但是設置這些行動需要,我知道在來自看法和指定的DataSourceID模型中的屬性的值。
在控制器的初始化方法是模型信息可用?如果答案是否可用,我可以檢查會話變量嗎?
我的情況可能不尋常。我有管理屏幕,每個屏幕允許用戶從許多不同的數據源位置中選擇一個數據源。我想在初始化器中設置我的服務實例,但是設置它們需要我知道用戶選擇了哪些數據源。如果我不在初始化程序中這樣做,那麼我將不得不創建以數據源作爲參數的服務的實例。 –
我不認爲這很不尋常;儘管它可能需要額外的抽象,因爲並非所有數據訪問服務的實例都使用相同的數據源。您可以提供一個服務來處理從通用名稱中選擇數據源。如果您將該服務注入數據訪問服務,它將允許您將數據源名稱與來自您的操作方法的每個調用一起傳遞。如果您無法修改數據服務實現,則可以創建一個使用像委託或工廠這樣的延遲相關性創建策略的包裝器。 –