asp.net – 通过链接按钮单击从一个用户控件到另一个用户控件
我在同一页面上有两个用户控件.一个包含显示导航链接的ListView,当用户单击ListView中的buttonlink时,应更新第二个用户控件.我怎样才能做到这一点?
解决方法
> UserControl A应该处理按钮单击并在UserControl中声明
raise a custom event
>该页面处理此事件并调用UserControl B的公共方法来更新其内容 您可以通过EventArgs将UserControl A中的必要信息传递到页面(或者将UserControl本身作为参数传递并使用它的公共属性). 然后页面通过方法参数将参数传递给UserControl B,或者在调用Update-Method之前更改它的公共属性. > http://msdn.microsoft.com/en-us/library/fb3w5b53.aspx 以下是您请求的示例代码. 使用ListView减少UserControl A: <%@ Control Language="vb" AutoEventWireup="false" CodeBehind="UsercontrolA.ascx.vb" Inherits="WebApplication1.UserControlA" %> <asp:ListView ID="ListView1" runat="server"> <ItemTemplate> <asp:LinkButton ID="LinkButton1" CommandName="LinkClick" CommandArgument='<%#Eval("ID") %>' runat="server" Text='<%#Eval("Text") %>'></asp:LinkButton> </ItemTemplate> </asp:ListView> 从代码隐藏中删除了ListView数据绑定,因为这无关紧要.重要的部分是处理ListView的ItemCommand并引发自定义事件: Public Event LinkClicked(sender As UserControlA,id As Int32) Private Sub LV_ItemCommand(sender As Object,e As ListViewCommandEventArgs) Handles ListView1.ItemCommand If e.CommandName = "LinkClick" Then Dim id = CType(e.CommandArgument,Int32) ' This is the best way for UC's to commmunicate with the page: ' RaiseEvent LinkClicked(Me,id) End If End Sub 简单的UserControl B只有一个Label(ascx): <%@ Control Language="vb" AutoEventWireup="false" CodeBehind="UserControlB.ascx.vb" Inherits="WebApplication1.UserControlB" %> <asp:Label ID="Label1" runat="server"></asp:Label> 使用代码隐藏中的Update-Method: Public Sub Update(showID As Int32) Me.Label1.Text = String.Format("Link {0} clicked",showID.ToString) End Sub 最后,这是Page(aspx) <uc1:UsercontrolA ID="UC_A" runat="server" /> <br /> <uc2:UserControlB ID="UC_B" runat="server" /> 它控制UserControls.它处理来自UserControl A的事件并调用UserControl B提供的Update-Method: Private Sub LinkClicked(sender As UserControlA,id As Integer) Handles UC_A.LinkClicked Me.UC_B.Update(id) End Sub 这种事件方法的优点是UserControls可以重复使用.您也可以在其他页面中使用UserControl A,即使它们不处理此事件也是如此.它是控制器的一部分,用于决定需要什么以及应该做什么. UserControls作为规则不应该依赖于特定的控制器,否则它们是硬链接的而不是可重用的.这也是令人讨厌的错误的良好来源. UserControl可能是其他嵌套(用户)控件的控件,但不是页面本身的控件. 沟通摘要: >页面 – > UserControl – >公共财产和方法> UserControl – >页面 – >活动> UserControl – > UserControl – > controller-UserControl采用页面角色(见上文) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – ASP.NET MVC Intellisense没有找到ViewData
- asp.net – SignalR 2在Azure上失败
- asp.net – 在Windows 2008 R2 SP1上,asmx的JQuery失败
- asp.net – 任何框架依赖于IIdentity.AuthenticationType?
- asp.net – 如何阻止Microsoft.Sharepoint.Sandbox.dll被复
- asp.net-mvc – LINQ用于检索多级关系数据的查询
- asp.net-mvc-3 – 如何在Mvc3中填充ListBoxFor?
- asp.net-mvc – 编译MVC并预编译视图并部署到Azure WebRole
- asp.net-mvc-3 – 即使关闭了自动完成功能,Firefox也会缓存
- asp.net-mvc-4 – 使用HTML.ActionLink调用Post方法
- 如何重定向到returnUrl在Asp.Net MVC5中工作
- asp.net删除未使用的httpmodules
- asp.net-mvc – MVC授权属性HttpUnauthorizedRes
- ASP.NET Core 中的框架级依赖注入
- asp.net-mvc-3 – 使用Jquery Ajax渲染部分视图与
- ASP.NET C#OutofMemoryException大文件上载
- 以编程方式从webforms页面调用asp.net mvc控制器
- 嵌套字典到嵌套转发器asp.net c#
- 实体框架 – 在Db初始化程序的种子方法中创建Asp
- asp.net-mvc-3 – MVC 3使用RenderPage更改视图中