2010-08-21 69 views
0

我正在处理在业务逻辑层中控制验证(范围)检查的应用程序。该代码类似于此:在BLL中设置TextBox焦点ASP.NET

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的交互限制在表单的TextBox控件的ValidateRange检查上,每个检查返回一个。如果我不正确地处理这个问题,请告诉我。如果它以这种方式工作,我如何允许BLL从表示层访问文本框?

感谢您的帮助。

回答

1

我不会尝试让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(无效)。

+0

我们被告知不要使用ASP.NET验证器,所以我会尝试查看并合并自动对焦无效文本框方法。 谢谢。 – Robert 2010-08-23 18:01:26