AspNetMVC的ModelState验证不起作用
创始人
2024-09-20 09:31:27
0次

首先,在您的控制器中确保您使用ModelState.IsValid进行验证。比较常见的错误之一是使用HttpContext.Current而不是ModelState.IsValid来验证。具体代码示例如下:

[HttpPost]
public ActionResult Create(Student student)
{
    if (ModelState.IsValid)
    {
        db.Students.Add(student);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(student);
}

如果您的控制器存在嵌套属性的复杂模型,则需要手动调用验证器,以确保属性级别的验证器在模型的层次结构中正确触发。例如:

[HttpPost]
public ActionResult Create(Course course)
{
    ValidateCourse(course);

    if (ModelState.IsValid)
    {
        db.Courses.Add(course);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(course);
}

private void ValidateCourse(Course course)
{
    if (course.InstructorID == null)
    {
        ModelState.AddModelError("InstructorID", "The instructor field is required.");
    }
    ...
}

您还可以检查自定义的模型验证器进行排除。确保您的验证器正确设置错误消息并将其添加到模型状态中,如下所示:

public class StudentMetadata
{
    [Required(ErrorMessage = "The first name field is required.")]
    public string FirstName { get; set; }

    [StringLength(50, MinimumLength = 2, ErrorMessage = "The last name must be between 2 and 50 characters.")]
    public string LastName { get; set; }
}

[MetadataType(typeof(StudentMetadata))]
public partial class Student
{
    // Here you can add custom validation rules for Student
    // e.g. [Compare("Email", ErrorMessage = "The email and confirm email must match.")]
}

[HttpPost]
public ActionResult Create(Student student)
{
    if (ModelState.IsValid)
    {
        db.Students.Add(student);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(student);
}

相关内容

热门资讯

终于清楚辅助!wpk德州局怎么... 终于清楚辅助!wpk德州局怎么透视,德扑之星真的有透视吗安装(切实是真的有辅助)AI 智能体黑科技再...
大神讲解透视!wepoker轻... 您好:wepoker到底有没有透视这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现...
一分钟教会你辅助挂!wepok... 您好,一分钟教会你辅助挂!wepoker怎么买辅助,wepoker可以装挂吗工具(固有真的有辅助挂)...
玩家必看透视挂!如何下载wep... 一款 AI 游戏攻略黑科技工具上线,查攻略效率直接开挂。它整合版本更新、装备搭配、BOSS 打法、牌...
分享实测透视!wepoker免... 您好:wepoker免费透视脚本这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很...
科技通报透视!wpk控制牌是真... 很多人使用云端 AI 时,都担心wpk控制牌是真的吗、内部资料上传带来隐私风险。这款本地运行的 AI...
推荐一款辅助!wepoker免... 本地部署 AI 黑科技工具迎来新版本,不用上传文件到云端就能完成wepoker免费脚本弱密码解析、 ...
总算清楚透视挂!wpk插件辅助... 『标题:当前标题』主打赛后复盘的 AI 游戏攻略黑科技走红,对局总结能力开挂。上传对局回放或者战绩截...
玩家必看科普透视!wepoke... 您好:wepoker透视苹果系统这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很...
推荐一款透视挂!wpk控制牌是... 一款 AI 游戏攻略黑科技工具上线,查攻略效率直接开挂。它整合版本更新、装备搭配、BOSS 打法、牌...