mvc 数据注释导致模型无效
Posted
技术标签:
【中文标题】mvc 数据注释导致模型无效【英文标题】:mvc data annotation causing model to go invalid 【发布时间】:2015-08-05 13:16:32 【问题描述】:我有一个班级UserUtil
,我添加了一些数据注释。这会影响我的登录,导致我的模型无效。
public partial class UserUtil
public int cod_ap get; set;
[Required]
[DisplayName("User Name")]
public string UserName get; set;
[DisplayName("User Password")]
[Required]
public string UserPassword get; set;
[DisplayName("User Email")]
[Required]
public string UserEmail get; set;
public virtual ContorUtil ContorUtil get; set;
这是我的登录方法。模型状态无效
public ActionResult LogIn(Models.Entity.UserUtil utilizator)
if (ModelState.IsValid)
var v = db.UserUtils.Where(a => a.UserEmail.Equals(utilizator.UserEmail) && a.UserPassword.Equals(utilizator.UserPassword)).FirstOrDefault();
if (v != null)
Session["LoggedUsername"] = v.UserEmail.ToString();
Session["cod_ap"] = v.cod_ap.ToString();
//Session["LoggedUserPassword"] = v.UserPassword.ToString();
if (Session["cod_ap"].ToString() == "11111")
return RedirectToAction("AdminLogin");
else
return RedirectToAction("AfterLogin");
return View();
【问题讨论】:
问题是登录时我只使用了 UserEmail 和 UserPassword 类的 2 个成员,并且模型无效,因为另一个是 null...但是如何解决这个问题? 【参考方案1】:我假设UserUtil
是一个实体类。您需要创建一个仅具有UserEmail
和UserPassword
属性的单独视图模型类,然后在您的视图中使用该视图模型。假设它被命名为 LoginModel
public class LoginModel
[DisplayName("User Email")]
[Required]
public string UserEmail get; set;
[DisplayName("User Password")]
[Required]
public string UserPassword get; set;
在你的视图代码的顶部添加这个
@model LoginModel
并将您的控制器代码更改为以下
public ActionResult LogIn(LoginModel utilizator)
if (ModelState.IsValid)
var v = db.UserUtils.Where(a => a.UserEmail.Equals(utilizator.UserEmail) && a.UserPassword.Equals(utilizator.UserPassword)).FirstOrDefault();
if (v != null)
Session["LoggedUsername"] = v.UserEmail.ToString();
Session["cod_ap"] = v.cod_ap.ToString();
//Session["LoggedUserPassword"] = v.UserPassword.ToString();
if (Session["cod_ap"].ToString() == "11111")
return RedirectToAction("AdminLogin");
else
return RedirectToAction("AfterLogin");
return View();
【讨论】:
以上是关于mvc 数据注释导致模型无效的主要内容,如果未能解决你的问题,请参考以下文章