【问题标题】:Setting TextBox focus in BLL ASP.NET在 BLL ASP.NET 中设置 TextBox 焦点
【发布时间】:2010-08-22 07:46:45
【问题描述】:

我正在开发一个在业务逻辑层中控制验证(范围)检查的应用程序。代码如下所示:

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

感谢您的帮助。

【问题讨论】:

    标签: c# asp.net


    【解决方案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(无效)。

    【讨论】:

    • 我们被指示不要使用 ASP.NET 验证器,因此我将尝试研究并合并自动聚焦无效文本框方法。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多