我有一个字符串,在不同的地方插入特殊字符。例如:
string myString = "This is a textbox: ##";
我想用控件(即文本框)替换##
。
Replace
方法只允许用另一个字符串或字符替换字符串(可以理解)。但是,在其位置动态替换##
的最佳方法是什么?
我想也许我可以用可以执行的HTML标记替换它,但不太确定如何实现。
由于
编辑:澄清一些细节。正在从数据库中检索字符串,因此我无法使用PlaceHolder控件。用户从下拉列表中选择一个字符串。 item的值是带有特殊字符的字符串。当从项目选择发生回发时,我想在网站上显示字符串,但用完全工作的控件(在这种情况下,文本框)替换特殊字符
答案 0 :(得分:1)
考虑利用TextBox的Render()
方法。那将为您提供从该TextBox输出的HTML。
然后,您可以使用该字符串作为替换文本来替换字符串的##
部分。
var myTxtBox = new TextBox();
myTxtBox.Text = "Hello World";
//implement the Render code in here
string myRenderedTextBoxHTML = RenderIt(myTxtBox);
string myString = "This is a textbox: " + myRenderedTextBoxHTML;
我不确定ViewState是否可用于此控件。
答案 1 :(得分:1)
这样的事情:
Panel panel = new Panel();
string myString = "This is a textbox: ##";
// some parsing logic
string[] arr = { "This is a textBox", "##" };
foreach(var item in arr)
{
if (item == "##"){
TextBox tb = new TextBox();
panel.Controls.Add(tb);
}
else{
Label l = new Label();
l.Text = item;
panel.Controls.Add(l);
}
}
your_plaaceholder.Controls.Add(panel);
答案 2 :(得分:0)
myString = string.Replace("##", "<input type='text' />");
请注意,这是不一个控件:它只是一个html元素,以后不会在服务器端连接。并且取决于你对字符串的处理可能甚至没有那么多,因为一些控件(如标签)将自动转义<
和>
个字符。
如果你真的想要一个完全工作的asp.net控件,我们需要更多地了解你如何将该字符串添加到页面。
答案 3 :(得分:0)
你确实可以用标记替换它:
string mystring = "This is a textbox: ##".Replace("##", "<input type='text'/>");
Response.Write(mystring);
但是,我不确定你为什么要这样做。为什么不使用PlaceHolder
控件并在后面的代码中粘贴TextBox?
答案 4 :(得分:0)
Sash说,但是如果你想利用viewstate,请确保每次都将它放在Page.Init()中。