我的asp.net网站上有以下错误消息,当我替换文本框并将下拉列表命名为与文本框ID相同的下拉列表ID时。
下拉菜单中的值应该被记录下来并放入电子邮件正文中,当我点击提交按钮时,它将作为邮件收到。
以下是我点击提交按钮时收到的错误。
System.InvalidCastException:无法将类型为“System.Web.UI.WebControls.DropDownList”的对象强制转换为“System.Web.UI.WebControls.TextBox”。在C:\ v1.5_production_05June09 \ Default.aspx.vb中的WebApplication1._Default.collectEmailBodyText():第213行
请帮助我!
答案 0 :(得分:1)
你是如何取代下拉列表的?听起来像你的设计师文件可能与你的.aspx文件不同步。其中一个是将其声明为下拉列表,其中一个已将控件键入为文本框。
检查以确保您的designer.vb文件将控件声明为下拉列表而不是文本框。
答案 1 :(得分:0)
在你背后的代码中,你有一些东西正在做一个FindControl或类似的东西,它正在进行演员表。
您可以在CType的当前文档中执行ctrl + f查找,并且应该找到它。
答案 2 :(得分:0)
听起来好像代码在更改后没有重新编译,或者如果重新编译,则设计器文件没有选择更改。
设计器文件引用了ASPX页面上的每个控件,因此它会有一些像
这样的行protected global :: System.Web.UI.WebControls.TextBox myInput
当你将它变为下拉列表时,设计师应该改为:
protected global :: System.Web.UI.WebControls.DropDownList myInput
如果没有发生这种情况,您将遇到错误。在运行时,ASPX页面上的控件是实例化的,但如果基础类型不同,那么一旦尝试访问控件,就会出现错误。