【发布时间】:2022-01-21 12:43:24
【问题描述】:
我一直在尝试在线寻找解决方案,例如here 和here。但它们似乎对我没有帮助,因为我的 GET 似乎没有在页面加载时更新我的视图模型,而这些提供了关于 POST 行为的解释。
当用户完全离开页面时,原始值如何仍在视图模型中。我也试过清除浏览器缓存,原来的值还在加载中。
我希望每次用户登陆页面时都进行干净的加载。
我正在从控制器中的数据库中获取用户的名字和姓氏。
我的控制器操作:
public class CreateArticleController : Controller
{
private static readonly ApplicationDbContext _context = new();
public IActionResult CreateArticle()
{
ModelState.Clear();
CreateArticlePageLocSourceNames _locSourceCreateArticlePageNameReferenceLibrary = new CreateArticlePageLocSourceNames();
var viewModel = new CreateArticleViewModel
{
PageTabTitle = _locSourceCreateArticlePageNameReferenceLibrary.GetLocSourcePageTabTitleNameReferenceForCreateArticlePage(),
Title = _locSourceCreateArticlePageNameReferenceLibrary.GetLocSourceTitleNameReferenceForCreateArticlePage()
//Other viewModel values are also being populated here
};
var user = User.GetUserId<string>();
var userDetails = _context.Users.Find(user);
if (userDetails.FirstName != null)
{
viewModel.UserFirstName = userDetails.FirstName.ToString();
Debug.WriteLine("************* UserFirstName: " + viewModel.UserFirstName);
} else
{
viewModel.UserFirstName = null;
Debug.WriteLine("************* UserFirstName IS NULL");
}
if (userDetails.LastName != null)
{
viewModel.UserLastName = userDetails.LastName.ToString();
Debug.WriteLine("************* UserLastName: " + viewModel.UserLastName);
}
else
{
viewModel.UserLastName = null;
Debug.WriteLine("************* UserLastName IS NULL");
}
return View(viewModel);
}
}
然后,我将在视图中检查名字和姓氏是否具有值。如果有,我会使用它们,如果没有,我会显示一条错误消息。
@if (Model.UserFirstName == "" || Model.UserFirstName == null || Model.UserLastName == "" || Model.UserLastName == null)
{
<p class="font-danger" id="CreateArticleCardAuthor">@_loc[Model.AddName]</p>
}
else
{
<p class="font-style-content-small-black" id="CreateArticleCardAuthor">@_loc[Model.Author]: @Model.UserFirstName @Model.UserLastName</p>
}
预期行为:
- 页面加载并且用户没有在数据库中有名字
-
viewModel.UserFirstName为空 - 用户看到
<p class="font-danger" id="CreateArticleCardAuthor">@_loc[Model.AddName]</p>错误消息 - 用户导航到不同的设置页面并将他们的名字添加到数据库中
- 用户导航回原始页面
- 页面加载时
viewModel.UserFirstName是从数据库中填充的 -
使用
<p class="font-style-content-small-black" id="CreateArticleCardAuthor">@_loc[Model.Author]: @Model.UserFirstName @Model.UserLastName</p> - 用户不再看到错误
实际行为:
- 页面加载并且用户没有在数据库中有名字
-
viewModel.UserFirstName为空 - 用户看到
<p class="font-danger" id="CreateArticleCardAuthor">@_loc[Model.AddName]</p>错误消息 - 用户导航到不同的设置页面并将他们的名字添加到数据库中
- 用户导航回原始页面
- 页面加载时
viewModel.UserFirstName仍然为空 -
<p class="font-danger" id="CreateArticleCardAuthor">@_loc[Model.AddName]</p>还在使用中 - 用户仍然看到错误
【问题讨论】:
-
您是否检查过填充模型是否已传递给视图?
标签: asp.net .net asp.net-mvc model-view-controller view