我想在asp.net Core中生成一個通用的BaseViewPage來訪問當前用戶的標識。如何在_viewimports文件中注入依賴關係
爲此,我創建了一個BaseViewPage.cs文件 -
public abstract class BaseViewPage<TModel> : RazorPage<TModel>
{
private static ClaimsPrincipal principal;
public BaseViewPage(IPrincipal _principal)
{
principal = _principal as ClaimsPrincipal;
}
}
正如你可以在這裏構造我注射,這樣它能夠在運行時定義IPrincipal
類型的依賴看到。
現在的時間來繼承它_viewimports.cshtml文件中的所有視圖頁面,如下使用當前用戶 -
@using TWCStore
@inherits MyStore.Helpers.BaseViewPage<TModel>
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
每當我試着在我看來,使用任何財產 - ProductCategories.cshtml
錯誤這裏調用
嚴重性代碼說明項目文件的線路抑制狀態 錯誤CS7036沒有給定參數對應於 「BaseVie的 需要的形式參數「_principal」 wPage.BaseViewPage(IPrincipal的)」的MyStore d:\項目\ TWCStore \ TWCStore \查看\店\ ProductCategories.cshtml 1活動
我,當我注入那麼依賴它要我把IPrincipal
的假設這裏也依賴於 -
@inherits MyStore.Helpers.BaseViewPage<TModel>
如何在這裏注入這種依賴關係?
你嘗過startup.cs註冊? – Rohit
ClaimsPrincipal沒有註冊依賴注入的東西,認證中間件從每個請求的auth cookie創建主體。你不需要注入它,因爲它已經在視圖中可用。用戶屬性本質上是在視圖中可用的,並且是ClaimsPrincipal –
也可能最好不創建帶有構造函數依賴項的basepage,因爲您可以在視圖內部使用@inject來注入事物 –