如何在asp.net mvc中处理业务逻辑验证

时间:2014-10-03 11:16:34

标签: c# asp.net-mvc validation

想象一下以下场景:

一个实体类“Class”,代表给学生的课程:

public class Class
{
   public Term Term { get; set; }
   public string ClassName { get; set; }
   public Subject Subject { get; set; }
   public Staff Tutor { get; set; }
}

与“主题”和“职员”等其他类(实体)有关联。

现在,如果我们有一个ViewModel,其中包含可选主题列表和可选教师列表,那么这些列表会根据以下业务规则在将它们分配给视图模型之前进行过滤 < / p>

创建班级的条件:

  1. 允许选择的主题是那些为当年创建并且没有为其创建超过2个类的主题
  2. 允许选拔的辅导员(工作人员)是指他们正在教授当前“学期”的课程不超过3个。
  3. 在视图方面,假设我们有一个Razor视图,允许使用下拉列表进行选择。 鉴于登录之前有人可以在发布之前修改表单数据,他们可以发布数据,如果直接用于持久性将导致违反上述条件。

    这让我们想到了如何处理这个问题:

    • 我们是否通过获取符合上述条件的“主题”和“导师”的过滤列表并检查提交的表单是否包含与提取的过滤列表兼容的选项来在服务器上再次验证?
    • 如果我们这样做,那么在呈现视图时我们是否已经完成了该操作会不会有冗余?
    • 缓存列表将涉及识别相关操作,如果上述2 的条件受到用户在与视图交互时所做的操作的影响,该怎么办?
    • 规则引擎(WF ??)适合这种情况吗?

    反馈意见。

0 个答案:

没有答案