2017-07-03 36 views
0

TL; DR繼承在頁/碼塊中定義類用戶控件

是否有可能使用UserControlInherits="..."在代碼塊中定義的類,而不是在已編譯的類,以取代代碼隱藏?


我有一個ASP.NET Web應用程序,我很快就需要修補,但我只允許更新.aspx.ascx文件......這是不可能對我來說,重新編譯和發佈.dll文件(由於客戶對我們的改變管理流程)。

在應用程序中,我有一個UserControl從文件的代碼隱藏類設置爲Inherit ...但該類中存在一個錯誤。

我想要做的就是在.ascx文件中的<script runat="server"></script>塊中用適當的bug修復重新創建整個類。

我試過以下,但我得到...

未能加載類型 'MyCtrlStatic'。

<%@ Control Language="vb" AutoEventWireup="false" Inherits="MyCtrlStatic" %> 
<script runat="server"> 
    Public Class MyCtrlStatic 
    Inherits UserControl 
    Public Function DisplayValue() As String 
     Return "Hello World" 
    End Function 
    End Class 
</script> 
<div><%=DisplayValue()%></div> 

在考慮中的控制是使用了很多不同的屬性和方法的從代碼隱藏類,以及上述是問題的大規模的簡化。

這可能實現嗎?否則,我正在考慮重新構建並完成整個變更管理流程。

+0

_「這是不可能的,我重新編譯」_如果這將工作,它必須重新編譯 –

+0

@Tim - 我明白你的意思...該死的。我希望有一個明顯的解決方案,我完全錯過了。好吧。謝謝 – freefaller

+0

@Tim - 如果你有興趣,我已經解決了它...看到[我的回答](https://stackoverflow.com/a/44889997/930393) – freefaller

回答

0

答案是盯着我的臉,我看不到它,直到剛剛幾分鐘前...

而不是試圖聲明一個新的Class和繼承它,答案是直接從UserControl繼承,然後直​​接在代碼塊中獲得代碼。

<%@ Control Language="vb" AutoEventWireup="false" Inherits="UserControl" %> 
<script runat="server"> 
    Public Function DisplayValue() As String 
    Return "Hello World" 
    End Function 
</script> 
<div><%=DisplayValue()%></div> 

除了上述,我也只好添加一些Import命令,如...

<%@ Import Namespace="System.Collections.Generic" %> 

但現在我有一個修補.ascx文件不需要重建該工作的DLL