繁体   English   中英

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

[英]How can I get a server-side control's tag?

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

TextBox textBox=new TextBox();

GetTag(TextBox textBox)
{
    ...
}

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

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

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

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

等等...

您可以使用 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++;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM