舊題: 我之所以要做到這一點是因爲我想圍繞創建工作爲:從固定值必填字段驗證對於圖像控制
舊信息,防止動態創建的控制Image控件的必需字段驗證程序。我的代碼工作方式是在按鈕旁邊有一個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;
出現這種情況,每次我創建所有控件。對於所有的控制,他們都保留自己的價值觀,這是我不希望發生的唯一控制。有誰知道如何做到這一點?或者另一種驗證圖像控制的方式?
感謝您的時間, 所有評論/答案是讚賞(:
解決:
我創建了一個CheckBoxList的必填字段校驗器,我發現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";
}
}
}
}