用控件替换字符串

时间:2010-02-15 17:06:38

标签: c# asp.net controls replace

我有一个字符串,在不同的地方插入特殊字符。例如:

string myString = "This is a textbox: ##";

我想用控件(即文本框)替换##

Replace方法只允许用另一个字符串或字符替换字符串(可以理解)。但是,在其位置动态替换##的最佳方法是什么?

我想也许我可以用可以执行的HTML标记替换它,但不太确定如何实现。

由于

编辑:澄清一些细节。正在从数据库中检索字符串,因此我无法使用PlaceHolder控件。用户从下拉列表中选择一个字符串。 item的值是带有特殊字符的字符串。当从项目选择发生回发时,我想在网站上显示字符串,但用完全工作的控件(在这种情况下,文本框)替换特殊字符

5 个答案:

答案 0 :(得分:1)

考虑利用TextBox的Render()方法。那将为您提供从该TextBox输出的HTML。

然后,您可以使用该字符串作为替换文本来替换字符串的##部分。

TextBox Render() on MSDN

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()中。