首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从ASCX控件调用ASPX方法

从ASCX控件调用ASPX方法
EN

Stack Overflow用户
提问于 2011-11-01 06:08:42
回答 2查看 1.4K关注 0票数 1

我在home.aspx上有一个从ASCX控件调用的方法HasAdminRole()。ASCX使用(主页)this.Page).HasAdminRole()和home.aspx上的用户控件工作

现在,当我将相同的ASCX添加到不同的ASPX页面Adminuser.aspx时,当ASCX试图从不同的ASPX页面调用(主页)this.Page).HasAdminRole()时,而不是在home.aspx上时,我得到一个错误

我得到错误: Unable to cast object of type 'ASP.adminuser_aspx‘to type 'CALE.Home’。

当在多个ASPX上使用相同的ASCX,并且用户控件尝试在Home.aspx上调用单个方法时,如何解决此问题?

EN

回答 2

Stack Overflow用户

发布于 2011-11-01 06:11:17

建议将管理员/角色逻辑从.aspx中移出,放入可以从.aspx和.ascx访问的类中。这有点“关注点分离”,在公共领域有一些整洁的逻辑。基本上--只在页面代码隐藏中保留与页面相关的逻辑。

代码语言:javascript
运行
复制
public static class Roles
{
    public static HasAdminRole(User someUser)
    {
       // implementation
    }
}

从任何页面的代码隐藏或其他帮助器类调用它:

代码语言:javascript
运行
复制
 User foo;
 bool isAdmin = Roles.HasAdminRole(foo);
票数 2
EN

Stack Overflow用户

发布于 2018-06-04 20:37:48

所以我想出了一个解决这个问题的办法。

您可以在aspx页面中创建客户端触发器,并在ascx页面中使用javascript调用它。

例如:

aspx页面:

代码语言:javascript
运行
复制
<script>
 function doSomething()
 {
    //set hidden field values or do whatever else you might need to do here
    $('#<%= btnDoSomething.ClientID%>').click();
 }
</script>

 <asp:Button runat="server" ID="btnDoSomething" OnClick="btnDoSomething_Click" CssClass="hidden" />

背后的aspx代码:

代码语言:javascript
运行
复制
protected void btnDoSomething_Click(object sender, EventArgs e)
        {
            //do whatever you need to on the aspx page
        }

现在,您可以从任何您喜欢的ascx页面调用该javascript函数。

例如ascx页面:

代码语言:javascript
运行
复制
<button type="button" onclick="doSomething()">do something on your aspx page<button/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7960353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档