最近我处理了一个商业可用的ASP.NET产品,该产品应该未命名。当在代码中闲逛,我注意到,有用户控件铸造,看起来像这样:Casting UserControl ASP.control_name_ascx vs Control_Name - 优点/缺点?
Dim ctl As ASP.modules_controls_addressinput_ascx = DirectCast(Me.FindControl("AddressInput1"), ASP.modules_controls_addressinput_ascx)
最近我需要投一个usercontrol其特定的类型,我自己的一个项目,所以我可以访问它的公共属性,自然我从上面复制了铸造方法,因为我还没有看到另一种方法来做到这一点。
但是,当使用此类型的投射部署项目时,它会“构建”,但在尝试“发布”错误“未知类型”时失败。一些修修补补后,我意识到,声明类将工作作为类型如下:
Dim ctl As Modules_Controls_AddressInput = DirectCast(Me.FindControl("AddressInput1"), Modules_Controls_AddressInput)
当用户控件声明如下其ascx.vb文件:
Partial Class Modules_Controls_AddressInput
Inherits System.Web.UI.UserControl
事实上,这也通过发布解决了这个问题。
我的问题是什么会迫使别人投第一种方式,第二种方式,特别是当它意味着发布项目会失败?
感谢您的链接的用户控件的更多进一步的信息的一个实例。 +1,因为它解释说这是引用了ASP.NET的临时文件夹,但你真的没有回答为什么有人愿意这样做,而不是将其转换为类本身。 – NightOwl888