`
daniel.wuz
  • 浏览: 99466 次
  • 性别: Icon_minigender_1
  • 来自: 纽约
最近访客 更多访客>>
社区版块
存档分类

自定义控件校验失效的问题

    博客分类:
  • ASP
阅读更多
项目做开发时,使用了一个自定义控件,代码如下:
控件页面段 KnowtypeCtrl.ascx:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="KnowtypeCtrl.ascx.cs" Inherits="Controls_WorktypeCrtl" %>
<asp:DropDownList ID="ddlKnowtype" runat="server" CssClass="fixedwidth"></asp:DropDownList>


页面隐藏代码段
[ValidationPropertyAttribute("SelectedValue")]
public partial class Controls_WorktypeCrtl : System.Web.UI.UserControl
{
    public string SelectedValue
    {
      get { return ddlKnowtype.SelectedValue; }
      set { ddlKnowtype.SelectedValue = value; }
    }
...

}


调用该控件的代码段:
<body>
    <form id="form1" runat="server">
    <div>

<CustomCtrl:knowtype ID="ddlKnowtype" runat="server" />
                  <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="ddlKnowtype" runat="server" ErrorMessage="XXX: RequiredFieldValidator" />

<asp:Button id="btnOK" runat="server"  Text="确定" Cssclass="botton" OnClick="btnOK_Click"></asp:Button>
</div>


OnClick方法的实现:
    //修改确认
    protected void btnOK_Click(object sender, EventArgs e)
    {
        string oper = operate.Value;
        switch (oper)
        {
            case IOperate.ADD://增加操作
                onAdd();
                break;
            case IOperate.EDIT://修改操作
                onUpdate();
                break;
            default:
                break;
        }
        string itemtype = hfItemtype.Value;
        Response.Redirect("SubjectiveManage.aspx?itemtype=" + itemtype);
    }


这里我利用系统提供的Validator校验自己的控件。
我的设想是,程序在后台执行onclick方法前,会先行校验,就走不到onclick方法了,顺序如下:

web端onclick->后台校验失败->返回web页面

没想到每次点击以后,界面就自动跳转了,似乎校验控件没起作用。

再到btnOK_Click处设置断点,程序确实有调用其代码,这就比较奇怪了,是因为自定义的控件我不小心附上初值了,而导致非空校验失败的吗?

于是我在控件的get方法处设置了断点,发现每次返回的确是空值,这里也没问题,说明包含自定义控件的页面的校验过程应该如下:
web端onclick->后台校验失败->后台继续执行onClick方法->返回web页面

那页面中应该有记录是否校验成功的字段,百度一下,Page.IsValid可以解决此问题。

Asp.net在后台校验不管是否成功,都会响应按钮动作。



分享到:
评论

相关推荐

    KODExplorer 芒果云-资源管理器

    - 采用全新上传控件,跟安全,更好的体验。 - 拖拽支持文件夹,多个文件。上传自动过滤不允许的文件类型 - 拖拽上传 和上统一优化,修复webuploader的文件判断;火狐拖拽上传,ie9+拖拽上传。 - 上传时自动过滤不合格...

    精易模块[源码] V5.15

    5、改善“窗口_激活,窗口_置控件焦点,窗口_是否在最顶端”有时失败的问题,由易友【@wjt741106】提供代码。 6、新建“外部组合框_关闭列表”关闭已经弹出的下拉列表。 7、修正“文件_下载”不能下载的BUG,感谢...

    MySQL 5.1参考手册 (中文版)

    2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装MySQL ...

    MySQL 5.1中文手冊

    2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装MySQL ...

    mysql官方中文参考手册

    2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装MySQL ...

    MYSQL中文手册

    2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装...

    MySQL 5.1参考手册中文版

    2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装...

    MySQL 5.1参考手册

    2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装MySQL ...

    MySQL5.1参考手册官方简体中文版

    2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装MySQL ...

    eas供应链dep案例集

    如果提交时候还要增加提示校验仓库相同 以采购入单为例编写DEP案例。 " 0.5 单据操作控制修改 EASSCMA1P0070 仓库仓管员可跨组织选择 目前客户在选择仓管员时只能选择当前组织或平级组织,不能选择上级组织的职员,...

    mysql5.1中文手册

    通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装...

    MySQL 5.1官方简体中文参考手册

    2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装MySQL ...

Global site tag (gtag.js) - Google Analytics