該方法利用一個操作過濾器屬性類的處理上的控制器動作執行。首先,您需要創建一個新的Action Filter類,將其稱爲任何您想要的,但使其從ActionFilterAttribute類繼承。然後,您應該與ActionExecutedContext參數添加overrided OnActionExecuted方法:
public class ExampleActonFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
BaseViewModel model = filtercontext.Controller.ViewData.Model;
if (filterContext.Controller.ControllerContext.HttpContext.Session["UserName"] != null)
{
model.UserName = filterContext.Controller.ControllerContext.HttpContext.Session["UserName"];
}
}
}
接下來,你有你的頁面佈局採取視圖模型與以用戶名作爲字符串公共字符串參數:
public class BaseViewModel()
{
public string UserName {get;set;}
}
然後佈局頁面上有一個簡單的檢查(你想它要繪製),以確保值不爲空,如果不是的話,把它畫像這樣:
if (string.IsNullOrWhiteSpace(@Model.UserName))
{
<span>@Model.UserName</span>
}
現在,在您想要顯示用戶名的所有視圖中,只需讓該頁的ViewModel從BaseViewModel類繼承,並在需要顯示時將用戶名設置爲會話變量。
看一看這個SO發佈更多有關會話變量:here
我希望這有助於!
我嘗試過會議,但它不工作在不同的意見(頁)。我想保留用戶在登錄頁面的用戶名字段中輸入的值。我沒有使用任何形式的認證。這會在這個Senario中工作嗎? – ElectricRouge
也許是cookie? – VladL
您能否給我一個樣品? – ElectricRouge