加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

.net – 从页面后面的代码中调用User Control中的函数

发布时间:2020-12-16 07:42:43 所属栏目:asp.Net 来源:网络整理
导读:现在这简化了,但是这里有: 我有一个只包含一个* .ascx文件的用户控件.该控件没有代码隐藏:它只是一个包含一些函数的脚本,如下所示: %@ Control Language="VB" EnableViewState="False" ClassName="MyControlType" %script runat="server" Public Function
现在这简化了,但是这里有:

我有一个只包含一个* .ascx文件的用户控件.该控件没有代码隐藏:它只是一个包含一些函数的脚本,如下所示:

<%@ Control Language="VB" EnableViewState="False" ClassName="MyControlType" %>
<script runat="server">
    Public Function MyFunction() As String
       return "CalledMyFunction!"
    End Function
</script>

这是整个文件.我可以使用这样的标记成功地将此控件添加到aspx页面:

<%@ Register Src="~/path/to/Control.ascx" TagPrefix="aaa" TagName="MyControl" %>
...
<aaa:MyControl runat="server" id="MyControl1" />

现在我要做的是从页面的代码隐藏中调用MyFunction,如下所示:

Dim someString As String = MyControl1.MyFunction()

不幸的是,我做不到.相反,我得到一个编译错误,因为“’MyFunction’不是’System.Web.UI.UserControl’的成员.”

我也试过这个:

Dim someString As String = DirectCast(MyControl1,MyControlType).MyFunction()

然后编译器告诉我,“未定义类型’MyControlType’.”

我玩过很多次,但我无法让它发挥作用.将MyControl1转换为更精确类型的所有努力都失败了,其他解决办法也是如此.我怀疑问题是没有代码隐藏的ascx文件无法编译到程序集,但代码隐藏需要编译到程序集,因此编译器对控件的类型感到困惑.

为了能够调用该函数,我需要做什么?

[编辑]
所以我只需要为用户控件添加代码隐藏.无论如何,这就是我想要做的.不过,我仍然想知道如何在不需要的情况下做到这一点.

解决方法

对我来说很奇怪.

Imports Microsoft.VisualBasic

Public Class MyControlType
    Inherits UserControl
End Class

.

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<%@ Register Src="~/WebUserControl.ascx" TagPrefix="aaa" TagName="MyControl"  %>
...
<aaa:MyControl runat="server" id="MyControl1"  />

.

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
        Dim someString As String = MyControl1.MyFunction()
    End Sub

End Class

.

<%@ Control Language="VB" EnableViewState="False"  %>
<script runat="server">
    Public Function MyFunction() As String
       return "CalledMyFunction!"
    End Function
</script>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读