我正在使用ASP.NET Core RTM(完整的.NET Framework)。
我遇到了一个控制器的意外行为,该控制器接受实体模型作为参数并返回视图模型。在控制器中,我创建了一个视图模型的新实例,并使用实体模型来填充它。
[HttpGet]
public IActionResult Create(ActiveDirectoryUser model)
{
ApplicationUserView user;
user = new ApplicationUserView
{
UserName = model.UserName,
Email = model.Email.ToLower(),
FirstName = model.FirstName,
LastName = model.LastName,
Active = true
};
return View(user);
}
使用上面的代码,我注意到即使在调试中,ApplicationUserView对象显示电子邮件是小写的,电子邮件地址也不会在视图中更改为小写。
所以我做了一个测试,我在那里使用了ApplicationUserView对象的静态值。
user = new ApplicationUserView
{
UserName = "Test",
Email = "test@test.com",
FirstName = "Test",
LastName = "Test",
Active = true
};
使用上面的代码,视图仍然显示ActiveDirectoryUser模型传递的值。
我不明白ActiveDirectoryUser模型中的值是如何进入视图的,以及为什么我无法覆盖它们。我试图在构造函数中覆盖它们,如上所示,并尝试像user.Email = "test@test.com"
一样单独设置它们。
如何在没有ActiveDirectoryUser模型的任何数据的情况下将我的ApplicationUserView模型传递给视图?
答案 0 :(得分:3)
在发回模型之前尝试[
。页面模型存储在ModelState中,该模型优先于当前模型。
此外,我假设ModelState.Clear();
是您的视图绑定的模型..