我的页面上有多个TextBox
。我想验证TextBox
中至少一个asp.net webform
的值是否不为null或0。
TextBox
的ID是从txtvalue1
到txtvalue20
。我手动尝试,但不是手动进行,因为循环可能是我认为的最佳选择。我怎么做?谢谢!
答案 0 :(得分:1)
使用反射并执行类似的操作(未经测试)。
bool areOneOrMoreFieldsEmpty()
{
var textboxControls = GetType().GetFields().Where(field => field.Name.StartsWith("txtvalue");
foreach(var control in textboxControls)
{
var textValueProperty = control.GetProperty(nameof(TextBoxControl.Text));
var stringValue = textValueProperty.GetValue(this, null) as string;
if (string.IsNullOrEmpty(stringValue) || stringValue == "0")
{
return false;
}
}
return true;
}
答案 1 :(得分:1)
您可以使用customvalidator:
在.aspx中:
<asp:TextBox ID="txt1" runat="server"></asp:TextBox>
<asp:CustomValidator runat="server" ErrorMessage="Text must not be null or 0" ControlToValidate="txt1" OnServerValidate="TextBoxValidate" ForeColor="Red" />
<asp:TextBox ID="txt2" runat="server"></asp:TextBox>
<asp:CustomValidator runat="server" ErrorMessage="Text must not be null or 0" ControlToValidate="txt2" OnServerValidate="TextBoxValidate" ForeColor="Red" />
<asp:TextBox ID="txt3" runat="server"></asp:TextBox>
<asp:CustomValidator runat="server" ErrorMessage="Text must not be null or 0" ControlToValidate="txt3" OnServerValidate="TextBoxValidate" ForeColor="Red"/>
<asp:Button ID="btnDoSomething" runat="server" Text="Do something" OnClick="btnDoSomething_Click" />
在.cs中:
protected void btnDoSomething_Click(object sender, EventArgs e)
{
if (!Page.IsValid)
return;
//Do something
}
protected void TextBoxValidate(object source, ServerValidateEventArgs args)
{
args.IsValid = (args.Value != null && args.Value != "0");
}
答案 2 :(得分:0)
要遍历所有仅知道按钮名称的按钮,您将不得不使用反射,这可能很麻烦-但这是您可以研究的方向。
其他选项是具有可以迭代的集合:
Button[] myButtons = new Button[]{txtvalue1, ..., txtvalue20};
foreach(var button in myButtons)
{
// do operations here..
}