我在我的表中添加了1个新的字段,将该字段添加到Model DTO和Model ViewModel cs中,但Login表单提交后似乎无法工作。没有错误显示,登录页面只是刷新。我采取的步骤如下
1) 手动添加到表中的新字段
2) 在模型DTO和模型ViewModel cs中增加了新的字段。
[HttpPost]
public ActionResult Login(UserVM model)
{
if(ModelState.IsValid)
{
using (Db db = new Db())
{
var user = db.User.Where(x => x.Username.Equals(model.Username) && x.Password.Equals(model.Password)).FirstOrDefault();
if(user != null)
{
Session["Id"] = user.Id.ToString();
Session["Username"] = user.Username.ToString();
Session["Password"] = user.Password.ToString();
Session["Firstname"] = user.Firstname.ToString(); //NewField
Session["RoleName"] = user.RoleName.ToString();
return RedirectToAction("UserProfile");
}
else
{
ModelState.AddModelError("", "Username / Password is Invalid");
return View(model);
}
}
}
return View();
}
好了,我自己能够解决这个问题。我注意到的问题是非常独特的,我很乐意从头解释。
我先用这些信息创建了一个表
Id,用户名,密码。
然后在Controller中创建了它的Action,一切都设置好了。
后来我决定在表中添加新的字段,比如说名字、姓氏和电子邮件。
现在,问题来了。在Model ViewModel中,我创建了一个Model类作为UserVM,所以,如果我将这些新属性添加到Model类中,并加上[所需]数据注释,那么Login Action就不会响应。如果我返回并删除[所需]数据注释,动作就会工作。
我在谷歌上看到了一个解决方案,但没有成功。
暂时关闭这个票据作为解决,但很想知道我们如何能使Action运行与[所需]数据注释添加在模型类的新字段。