从page / usercontrol

时间:2017-07-03 15:05:55

标签: c# asp.net vb.net user-controls

TL; DR

是否可以使用代码块中定义的类替换Inherits="..."的{​​{1}},而不是编译后的代码中的类?

我有一个ASP.NET网络应用程序,我很快需要修补,但我只能更新UserControl.aspx文件...我不可能重新编译和发布.ascx文件(由于客户端给我们带来了变更管理流程)。

在应用程序中,我有.dll从代码隐藏类为文件设置为UserControl ...但是该类中存在错误。

我想要做的是使用相应的错误修复在Inherit文件的<script runat="server"></script>块内重新创建整个类。

我已尝试过以下内容,但我得到了......

  

无法加载类型&#39; MyCtrlStatic&#39;。

.ascx

有问题的控件使用了代码隐藏类中的许多不同属性和方法,以上是对问题的大规模简化。

这有可能实现吗?否则,我正在考虑重建并完成整个变更管理程序。

1 个答案:

答案 0 :(得分: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才能工作