0
我需要在頂部菜單中顯示用戶名,我將其添加到ViewData,但是在搜索頁的搜索頁中,因爲我正在回發,數據不再存在。我如何在不使用tempdata的情況下持久化。請觀看包或會議。在回發後保留MVC中的值持久性
這是我成功登錄後顯示搜索視圖的登錄頁面。
[HttpPost]
[Route("login")]
public async Task<ActionResult> Login(LogInRequest logInRequest)
{
User user = null;
if (ModelState.IsValid)
{
user = await GetUserByEmailAndPassword(logInRequest.UserName, logInRequest.Password);
if (user.Id != 0)
{
ViewData["Name"] = user.Name;
return View("~/Views/LoanDriver/Search.cshtml");
}
else
{
return View("~/Views/LoanDriver/Dashboard.cshtml");
}
......
return View("~/Views/Home/Index.cshtml");
}
,這是我搜索的看法:
@model CarFinance.Garage.Web.Models.SearchResult
@{
Layout = "~/Views/Shared/_SecondaryPage.cshtml";
}
@using (Html.BeginForm("SearchResult", "LoanDriver", FormMethod.Post))
{
@Html.AntiForgeryToken()
.......}
@Html.Partial("~/Views/LoanDriver/SearchResult.cshtml")
,這是母版頁,顯示在頂部的菜單:
@{
Layout = "~/Views/Shared/MasterLayout.cshtml";
}
@section header {
@(ViewData["Name"])
它顯示了第一次,但我將搜索按鈕刷新(回傳)到頁面名稱爲空。
使用包含屬性的基本視圖模型的視圖模型(並在每個請求中設置其值),然後在佈局中引用基礎模型 –
@Stephen Muecke您可以請expian moew或鏈接到我如何使用? – Alma
使用'@(ViewData [「Name」])'也適用於你(或'ViewBag.Name'),但你需要在每個請求中設置值 - 所以在每一個你需要獲取當前用戶的方法中設置它(就像您在Login POST方法中所做的一樣) –