如何获取服务器端控件的标签?

时间:2011-12-07 15:28:36

标签: c# asp.net

如何获取服务器端控件的标签?我猜它就像下面这样:

TextBox textBox=new TextBox();

GetTag(TextBox textBox)
{
    ...
}

结果类似<asp:TextBox />(控件的设计时标记)。

当我将控件更改为CheckBox时,结果应该类似于<asp:CheckBox />

2 个答案:

答案 0 :(得分:2)

没有方法可以为你返回这些标签,但是构建一个你自己应该很容易的字典。

Dictionary<Type, string> d = new Dictionary<Type, string>();
d.Add(typeof(TextBox), @"<\asp:TextBox />");
TextBox t = new TextBox();
string tag= (d[t.GetType()]);

等等......

答案 1 :(得分:0)

您可以使用RenderControl方法

StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
{
    using (HtmlTextWriter textWriter = new HtmlTextWriter(sw))
    {
        textBox.RenderControl(textWriter);
    }
}

sb将包含textBox的html内容。

修改

您可以获取aspx内容并找到元素标记。像这样:

    String path = Server.MapPath("~/[aspx path]");
    string content = File.ReadAllText(path);

    string controlID = "textBox";
    int startIndex = content.IndexOf("<asp:TextBox ID=\"" + controlID + "\"");
    bool foundEndTag = false;

    string controlTag = "";
    int i = startIndex;
    while (!foundEndTag)
    {
        if (content[i] == '>')
            foundEndTag = true;

        controlTag += content[i];
        i++;
    }