【发布时间】:2021-03-06 11:48:59
【问题描述】:
我为我的用户提供了一个 UserViewModel。我想用它来注册。
我不想使用我的数据模型进行注册或登录。
我的 UserViewModel 如下:
public class UserViewModel
{
public int user_id { get; set; } //Primary Key in user table
[Required]
[DisplayName("Email:")]
public string email { get; set; }
[Required]
[DisplayName("First Name:")]
public string f_name { get; set; }
[Required]
[DisplayName("Last Name:")]
public string l_name { get; set; }
[Required]
[DisplayName("Contact Number:")]
public string contact { get; set; }
[Required]
[DisplayName("Gender:")]
public string gender { get; set; }
[Required]
[DisplayName("Blood Type:")]
public string blood_type { get; set; }
[Required]
[DisplayName("Password:")]
[DataType(DataType.Password)]
public string password { get; set; }
[Required]
[DisplayName("Confirm Password:")]
[DataType(DataType.Password)]
[Compare("password")]
public string confirm_password { get; set; }
}
我的注册ActionMethod如下:
[HttpPost]
public ActionResult Registration(UserViewModel uvmr)
{
db.users.Add(uvmr);
db.SaveChanges();
return View();
}
我的用户数据模型(user.cs)如下:
public partial class user
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public user()
{
this.appointments = new HashSet<appointment>();
}
public int user_id { get; set; }
public string f_name { get; set; }
public string l_name { get; set; }
public string email { get; set; }
public string contact { get; set; }
public string gender { get; set; }
public string blood_type { get; set; }
public string password { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<appointment> appointments { get; set; }
}
注意:我的用户表中没有确认密码列。
现在错误提示无法从 das.Models.ViewModel.UserViewModel 转换为 das.Models.DataModel.user
这个解决方法是什么?
【问题讨论】:
-
没有“变通办法”——您需要手动或使用 Automapper 之类的工具将视图模型映射到数据模型的新实例。
-
@TiesonT。你能提供任何手动映射的链接吗?
-
手动映射:只需创建一个
user对象并将其字段1by1 设置为等于您的uvmr对象字段
标签: c# asp.net asp.net-mvc-5