我想获取已禁用文本框控件的值。
首先,我找到了文本框
TextBox txt1 = (TextBox)(Page.FindControl("txt1"))
然后保存文本框的值
decimal val1 = Convert.ToDecimal(txt1.Text.Trim().ToString())
但我没有得到任何价值,因为它无法找到控件,因为我的文本框控件已被禁用。
提前致谢
答案 0 :(得分:0)
更多细节会有所帮助。它应该简单:
string val1 = txt1.text;
除非有特殊原因,否则您甚至不需要使用FindControl。
答案 1 :(得分:0)
您确定要获取txt1中的文本框
也
string val1 = Convert.ToDecimal(txt1.Text.Trim().ToString())
您的代码错误..如何将小数转换为字符串
答案 2 :(得分:0)
TextBox 可能嵌套在其他控件中。如果是这样,你想要递归地找到它。
例如,
public static Control FindControlRecursive(Control root, string id)
{
if (root.ID == id)
return root;
return root.Controls.Cast<Control>()
.Select(c => FindControlRecursive(c, id))
.FirstOrDefault(c => c != null);
}
var txt1 = (TextBox)FindControlRecursive(Page, "txt1");
答案 3 :(得分:0)
我假设你的文本框中有一个数值,所以试试这样做:
decimal value = 0;
string money = String.Empty;
if(!string.IsNullOrEmpty(txtMoney.Text))
name = txtMoney.Text
value = Convert.ToDecimal(name);
这将验证您的文本框以避免null,但也会将其转换为十进制值。希望它有所帮助。
在分配值之前,您不需要FindControl
,只要您的标记有runat="server"
,您就应该能够在和中传递值。 服务器端回发将提供对控件内部内容的访问而没有问题。
测试后,禁用的控件不会在回发期间推送该值。你真的应该使用HiddenField
。
但是,<asp:HiddenField>
可能更适合您的要求。而不是禁用的文本框。想要这样:
string cash = String.Empty;
if(!string.IsNullOrEmpty(hfMoney.Value))
cash = hfMoney.Value;
隐藏字段将始终隐藏,因此始终可以访问。