C# ASP.NET控件ID特殊字符
我有一个C#项目,动态创建了C# ASP.NET控件ID特殊字符,c#,asp.net,C#,Asp.net,我有一个C#项目,动态创建了文本框,提交表单时,隐藏的代码需要检索文本框的值 文本框的id包含一个$美元符号,当检索值时,它会显示空 想知道$是否被视为ID的特殊字符,或者是否有办法处理此问题 //这是我的示例代码 //Create Form foreach (DataRow row in setOfColumns.Rows) { TextBox txtBox = new TextBox(); txtBox.ID = row["NameOfColumn"] + " textbox
文本框
,提交表单时,隐藏的代码需要检索文本框
的值
文本框的id
包含一个$
美元符号,当检索值时,它会显示空
想知道$
是否被视为ID
的特殊字符,或者是否有办法处理此问题
//这是我的示例代码
//Create Form
foreach (DataRow row in setOfColumns.Rows)
{
TextBox txtBox = new TextBox();
txtBox.ID = row["NameOfColumn"] + " textbox"; //Where row["NameOfColumn"] = "Money $"
}
//Display form on browser values
name="ctl00$ContentPlaceHolder1$ctl00$Money $"
id="ContentPlaceHolder1_ctl00_Money $"
value="$3,392"
//Submit Form
DataTable dt = new DataTable();
foreach (Control c in controls)
{
if (c is TextBox)
{
DataRow dr = dt.NewRow();
String txtValueCtrl = ((TextBox)c).Text.ToString(); //txtValueCtrl = "", it returns empty value for the textbox
dr["Value"] = txtValueCtrl;
dt.Rows.Add(dr);
}
}
//Once I remove the '$' from the txtBox.ID it is able to retrieve the value from the textbox
如果您使用的是.NET 4.0或更高版本,则可以通过向“Static”添加属性“ClientIDMode”来防止此行为,因为该属性将不再导致以您所看到的方式修改客户端ID
关于您无法访问该值:您确定已为控件打开viewstate吗?请显示一些代码,至少向我们提示您是如何执行此操作的。例如,它是ASP.NET文本框控件吗?提交表单时,表单数据中用作键的不是id
属性,而是name
属性。文本框的名称是什么?可能是重复的,您已经在id和名称上添加了空格。您可能错了。为什么要在Id和名称中添加空格$?我对控件Id的修改方式没有问题,因为我不是基于Id本身查找控件,代码会查看页面上的所有元素,并为值选择特定的元素。我尝试将控件的viewstate设置为true,但它仍然没有返回文本框的值。