2014-10-01 139 views
0

我需要为表单提交执行服务器端验证。我需要确保他们为课程字段输入的值存在于我的数据库中。我的数据库有一张可能的课程表和一个学生采取的课程表。为了向course_taken表添加记录,课程必须存在于课程表中。我是MVC的新手,我不确定这样做的最佳途径是什么。有没有像客户端的数据注释?任何帮助表示感谢你。服务器端验证ASP.NET MVC

+1

您应该显示供用户选择的可用值的列表 - 这将有效地防止无效值。让我知道你是否需要帮助。 – tintyethan 2014-10-01 18:49:30

回答

0

你会添加注释到模型类,以确保需要必填字段,但在检查如果课程存在的情况下,使用像在POST处理程序如下(假设你使用像实体框架):

if(!db.Courses.Any(o=>model.CourseId==o.CourseId)){ 
    ModelState.AddModelError("CourseId","Course does not exist!"); 
} 

if(ModelState.IsValid){ 
//save to db 
} else{ 
return View(model); 
} 
0

在我看来,你应该创建一个自定义验证注释你的财产有它,当你在你的ModelState中控制器检查的IsValid。 有了这个,你会在你的控制器减少混乱和您的审定会在正确的地方,所以如果需要改变,你可以随时改变。 此外,如果检查是从数据库中添加缓存中的数据。