我将一个选择控件添加到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;
我收到错误:“对象引用未设置为对象的实例。” 有没有人以前尝试过?
最好的问候
答案 0 :(得分:2)
HTML!=服务器控制:)
您可以通过以下方式获取值:Request["my_Selectlist"];
如果您想以编程方式访问它,而不是GenericControl,则需要创建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"));
答案 1 :(得分:1)
这里的InnerHtml
值实际是渲染的内部HTML,因此runat服务器只会显示为任何其他属性(尽管是无效的),而不是作为线索。 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>";
答案 2 :(得分:0)
如果您将html放入实际页面然后设置runat =“server”
,这将有效将它放在HtmlGenericControl.InnerHtml中的问题是整个事情只是输出 - 如果你查看视图源,你会看到它说runat =“server”就在那里。
在解析页面并处理了runats后输出