最近我處理了一個商業可用的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