.aspx.cs(代码隐藏)或BLL或两者中的验证代码?

cod*_*biz 1 c# asp.net validation business-logic

我试图打破一些编写错误代码的旧习惯.其中一个是放置验证码的地方.我不认为验证应该在表示层中.或者那里可能有一些验证?

这是我过去做的一个例子

protected void SaveBtn_Click(object sender, EventArgs e)
{

  Item itm = new Item();
  itm.Name = txtName.Text;

  if(String.IsNullOrEmpty(itm.Name))
  {
     //reject
  }
  else
  {
     ItemBLL.Save(itm); //no more validation here
  }
}
Run Code Online (Sandbox Code Playgroud)

要么

public class ItemBLL
{

   public static int Save(Item itm)
   {
      //no more validation in .aspx.vb
      if(String.IsNullOrEmpty(itm.Name))
      {
        //reject
      }
      else
      {
       //Save item
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

我一直在使用第一种方法,我正在考虑切换到第二种方法,但我无法预测问题会是什么或一方面的优势.即使是更好的方法,也请赞赏

更新: 我同意,为了用户的简单验证(例如常见错误)应该在演示文稿(.aspx)中完成(使用javascript,jQuery).

一些业务逻辑验证也应该驻留在BLL中,以实现可移植性和可重用性.

这是否意味着我们可以在代码隐藏(.aspx.vb或.aspx.cs)中跳过验证?

Mic*_*ael 5

两者都是最好的,但BLL是必须的.今天,您的业务类仅由一个界面使用 - 浏览器,但明天也许您可能希望Web服务也使用该类.然后,您将需要所有业务规则都在类中,而不是网页.但是你需要在Javascript中测试客户端以提供响应式界面的许多规则.您提供的名称不能为空的示例是经典的,用于在Javascript中进行测试,并且在名称具有值之前不允许启用"保存"按钮.但是,假设Name字段必须是唯一的 - 这可能不是您想要验证客户端的东西,并且愿意等到它到达服务器.