代码之家  ›  专栏  ›  技术社区  ›  Robert

在bll asp.net中设置文本框焦点

  •  0
  • Robert  · 技术社区  · 14 年前

    我正在开发一个应用程序,在该应用程序中,验证(范围)检查是在业务逻辑层中控制的。代码与此类似:

    public string ValidateRange(int value, int lowRange, int highRange, string fieldDesc, System.Web.UI.WebControls.TextBox txtBox)
    {
         string msg = "";
    
         if (value >= lowRange & value <= highRange)
             msg = "";
         else
         {
             msg = "Please enter a value between " + lowRange + " and " + highRange + " for \"" + fieldDesc + ".\"";
             txtBox.Focus();
         }
    
         return msg;
    }
    

    我很确定我做的不对,所以我希望有人能向我解释处理函数和bll的最有效方法,这样它就可以很好地传递给表示层了。我希望可以限制我与BLL的交互,以验证对表单的文本框控件的检查,并为每个控件返回一个值。如果我不正确地接近这个,请告诉我。如果它是这样工作的,我如何允许BLL从表示层访问文本框?

    谢谢你的帮助。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Sean Hanley    14 年前

    我不会试图让BLL与文本框或任何与演示相关的东西混淆。毕竟,BLL应该是不可知论者。否则,如果您需要编写一个Windows窗体表示层(要与ASP.NET层配合使用),您必须在BLL上重新编写或添加所有新方法,以支持接受System.Windows.Forms.TextBox!如果两个表示层不能共享相同的BLL方法/代码,则会破坏N层的整体目的。

    不,您将希望从BLL中删除文本框等的任何痕迹,而改为在表示层本身中编写自动聚焦无效文本框的代码。

    如果您使用的是ASP.NET的内置验证工具(page.isvalid和causesvalidation等),则只需检查哪个验证程序返回了false,并以这种方式设置焦点。您仍然可以让BLL提供错误消息。

    例如,使用customvalidator,您可以让它调用您的bll方法validaterange。如果返回值为string.empty,则返回true(有效)。如果它不是空的/非空的,您知道您遇到了一个错误,所以将CustomValidator的ErrorMessage和/或Text属性设置为返回的字符串,然后返回false(无效)。