【问题标题】:mvc data annotation causing model to go invalidmvc 数据注释导致模型无效
【发布时间】: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...但是如何解决这个问题?

标签: asp.net-mvc data-annotations


【解决方案1】:

我假设UserUtil 是一个实体类。您需要创建一个仅具有UserEmailUserPassword 属性的单独视图模型类,然后在您的视图中使用该视图模型。假设它被命名为 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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    相关资源
    最近更新 更多