我花了很多时间寻找解决方案似乎很简单的事情。
以下命令返回未设置为对象实例的" Object引用。"错误。我将此代码放在单独的空白页面上进行故障排除。有什么想法吗?
ASP.Net:
<div>
<asp:DropDownList ID="ChoosePattern1" ClientIDMode="Static" runat="server" CssClass="dropformat"
AutoPostBack="true" OnSelectedIndexChanged="getimage">
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="ChoosePattern2" ClientIDMode="Static" runat="server" CssClass="dropformat"
AutoPostBack="true" OnSelectedIndexChanged="getimage">
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
</asp:DropDownList>
</div>
C#Codebehind:
protected void getimage(object sender, EventArgs e)
{
for (int intCounter = 1; intCounter <= 8; intCounter++)
{
string mypattern = "ChoosePattern" + Convert.ToString(intCounter);
DropDownList ddl = Page.FindControl(mypattern) as DropDownList;
Response.Write(ddl.SelectedValue);
}
}
答案 0 :(得分:0)
您正在请求ChoosePattern1 ... ChoosePattern8项目,但仅在页面上存在ChoosePattern1和ChoosePattern2。
DropDownList ddl = Page.FindControl("ChoosePattern3") as DropDownList;
你得到null,因为不存在使用这种ID的下拉。
答案 1 :(得分:0)
该错误消息称为&#34;空引用异常&#34;。它通常意味着您尝试从对象访问属性,但该对象为空。
在您的情况下,ddl
可能是问题所在。如果Page.FindControl
找不到它(或者返回的对象不是DropDownList
),则存储的值将为null。因此,访问SelectedValue
将导致异常。
答案 2 :(得分:0)
更改
for(int intCounter = 1; intCounter&lt; = 8; intCounter ++)
到
for(int intCounter = 1; intCounter&lt; = 2; intCounter ++)