【问题标题】:Required Field Validator For Image Control图像控制的必填字段验证器
【发布时间】:2012-06-27 23:24:48
【问题描述】:

旧标题:防止动态创建的控件保留价值

旧信息: 我需要这样做的原因是因为我正在尝试为 Image 控件的必填字段验证器创建一个变通方法。我的代码的工作方式是我在按钮旁边有一个图像控件,用户单击按钮,然后被提示上传图像。我需要确保在用户进入下一阶段之前上传图片。

由于图像控件没有必填字段验证器,我创建了一个文本框,假设每次在回发时重新创建图像控件时都会显示图像控件的 imageURL。但是,文本框始终保留最初创建控件时的值。

* 注意:页面上的所有控件都是动态创建的。

我要做的第一件事是创建图像控件并将其添加到 HTML 表中。这工作正常。之后我找到表格单元格并将文本框添加到具有图像控件的单元格中:

HtmlTableCell tc = (HtmlTableCell)customProperties.FindControl("tcControl_" + (i + 1).ToString());
RadBinaryImage rbi = (RadBinaryImage)customProperties.FindControl("CustomControl" + (i + 1).ToString());

TextBox photoValue = new TextBox();
photoValue.ID = "CustomControl" + (i + 1).ToString() + "_txt";
photoValue.Text = rbi.imageUrl;

每次我创建所有控件时都会发生这种情况。对于所有控件,它们都保留其值,这是我不希望发生这种情况的唯一控件。有谁知道如何做到这一点?还是另一种验证图像控件的方法?

感谢您的宝贵时间, 感谢所有 cmets/answers (:

已解决:

我创建了我发现的复选框列表必填字段验证器的修改版本here. 这是代码:出于安全原因,我将命名空间替换为########。

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using Telerik.Web.UI;

namespace #######################################
{
    public class RequiredFieldValidatorForImages :
                        System.Web.UI.WebControls.BaseValidator
    {
        private Control _ctrl;

        public RequiredFieldValidatorForImages()
        {
            base.EnableClientScript = false;
        }

        protected override bool ControlPropertiesValid()
        {
            Control ctrl = FindControl(ControlToValidate);

            if (ctrl != null)
            {
                _ctrl = (Control)ctrl;
                return (_ctrl != null);
            }
            else
                return false;  // raise exception
        }

        protected override bool EvaluateIsValid()
        {
            try
            {
                Image rbi = (Image)_ctrl;
                return rbi.ImageUrl != "~/images/noimages.jpg";
            }
            catch
            {
                RadBinaryImage rbi = (RadBinaryImage)_ctrl;
                return rbi.ImageUrl != "~/images/noimages.jpg";
            }
        }
    }
}

【问题讨论】:

    标签: c# asp.net server-side dynamically-generated


    【解决方案1】:

    已解决:

    我创建了我发现的复选框列表必填字段验证器的修改版本here. 这是代码:出于安全原因,我将命名空间替换为########。

    using System;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.ComponentModel;
    using Telerik.Web.UI;
    
    namespace #######################################
    {
        public class RequiredFieldValidatorForImages :
                            System.Web.UI.WebControls.BaseValidator
        {
            private Control _ctrl;
    
            public RequiredFieldValidatorForImages()
            {
                base.EnableClientScript = false;
            }
    
            protected override bool ControlPropertiesValid()
            {
                Control ctrl = FindControl(ControlToValidate);
    
                if (ctrl != null)
                {
                    _ctrl = (Control)ctrl;
                    return (_ctrl != null);
                }
                else
                    return false;  // raise exception
            }
    
            protected override bool EvaluateIsValid()
            {
                try
                {
                    Image rbi = (Image)_ctrl;
                    return rbi.ImageUrl != "~/images/noimages.jpg";
                }
                catch
                {
                    RadBinaryImage rbi = (RadBinaryImage)_ctrl;
                    return rbi.ImageUrl != "~/images/noimages.jpg";
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-03-23
      • 2013-08-21
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      相关资源
      最近更新 更多