我正在使用ASP.NET Core RTM(完全.NET Framework)。ASP.NET核心實體模型自動映射到查看模型
我遇到了一些意外的行爲,接受實體模型作爲參數並返回視圖模型的控制器。在控制器中,我創建了一個視圖模型的新實例,並使用實體模型來填充它。
[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 = "[email protected]",
FirstName = "Test",
LastName = "Test",
Active = true
};
上面的代碼仍然顯示由ActiveDirectoryUser模型傳入的值。
我不明白來自ActiveDirectoryUser模型的值是如何使它到視圖,爲什麼我不能重寫它們。我試圖在構造函數中覆蓋它們,如上所示,並嘗試單獨設置它們,如user.Email = "[email protected]"
。
如何將我的ApplicationUserView模型傳遞給沒有來自ActiveDirectoryUser模型的任何數據的視圖?
您當前的代碼(問題頂部的代碼)將您的'ActiveDirectoryUser'對象的屬性值設置爲您的視圖模型。如果你不想這樣做,不要設置值。你面臨的問題究竟是什麼?你不想要任何值,或者你想要小寫的電子郵件值?對不起!我對你的預期行爲感到困惑 – Shyju
如前所述,最初的問題是電子郵件地址未被改爲小寫。我無法弄清楚爲什麼所以我做了我提到的測試,並且意外地發現無論我做了什麼,來自'ActiveDirectoryUser'模型的值都進入了視圖。 –