代码之家  ›  专栏  ›  技术社区  ›  Yongwei Xing

在asp.net中使用find control查找html控件

  •  0
  • Yongwei Xing  · 技术社区  · 14 年前

    我将选择控件添加到aspx页面,如下所示:

    hgc = new HtmlGenericControl();
    hgc.InnerHtml = @"<select runat='server' id='my_selectlist'> \
                      <option value='volvo'>Volvo</option> \
                      <option value='saab'>Saab</option> \
                      <option value='mercedes'>Mercedes</option> \
                      <option value='audi'>Audi</option> \
                    </select>";
    

    然后在一个按钮单击事件中,我使用下面的代码,尝试获取所选的值

    HtmlSelect s = (HtmlSelect)hgc.FindControl("my_selectlist");
    label.Text = s.Value;
    

    我得到一个错误:“ 对象引用未设置为对象的实例。 “ 以前有人试过吗?

    最好的问候

    3 回复  |  直到 14 年前
        1
  •  2
  •   Nick Craver    14 年前

    HTML!=服务器控件:)

    但是,您可以通过以下方式获取值: Request["my_Selectlist"]; 如果希望以编程方式访问它,则需要创建 HtmlSelect control 而是添加项目。

    例子:

    var sl = new HtmlSelect();
    sl.ID = "my_selectlist";
    sl.Items.Add(new ListItem("Volvo", "volvo"));
    sl.Items.Add(new ListItem("Saab", "saab"));
    sl.Items.Add(new ListItem("Mercedes", "mercedes"));
    sl.Items.Add(new ListItem("Audi", "audi"));
    
        2
  •  1
  •   David Hedlund    14 年前

    这个 InnerHtml 这里的价值将 事实上 是呈现的内部html,因此runat server将只显示为任何其他属性(尽管是无效的),而不是作为.net处理它的线索。

    试试这样的:

    hgc = new HtmlGenericControl();
    hgc.TagName = "select";
    hgc.ID = "my_selectlist";
    hgc.InnerHtml = @"<option value='volvo'>Volvo</option> \
                  <option value='saab'>Saab</option> \
                  <option value='mercedes'>Mercedes</option> \
                  <option value='audi'>Audi</option>";
    
        3
  •  0
  •   rtpHarry    14 年前

    如果您将html放入实际的页面,然后设置runat=“server”,这将起作用。

    把它放在htmlgenericcontrol.innerHTML中的问题是,整个东西只会得到输出——如果您查看视图源代码,就会看到它说runat=“server”在那里。

    在分析页面并处理runat之后输出