天道酬勤,学无止境

How to find user control of an ASP.NET page inside of event of another user control on that ASP.NET page EDIT: different content placeholders?

I have a ASP.NET page with 2 user controls registered. The first one has only one button in it. The second one is simple text and hidden on default. What I want is to make the second one visible when the button in the first one is clicked (that is on button click event).

ASP.NET page:

<%@ Page Title="" Language="C#" CodeFile="test.aspx.cs" Inherits="test" %>
<%@ Register Src="~/UC_button.ascx" TagName="button" TagPrefix="UC" %>
<%@ Register Src="~/UC_text.ascx" TagName="text" TagPrefix="UC" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MyTestContent" Runat="Server">
    <UC:button ID="showbutton1" runat="server" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MyTestContent2" Runat="Server">
    <UC:text runat="server" Visible="false" ID="text1" />
</asp:Content>

UC_Button.ascx.cs:

protected void button1_Click(object sender, EventArgs e)
{
    Button btnSender = (Button)sender;
    Page parentPage = btnSender.Page;
    UserControl UC_text = (UserControl)parentPage.FindControl("text1");
    UC_text.Visible = true;
}

What am I doing wrong? I get well known Object reference not set to an instance of an object. error on that last line of the code.

EDIT:

One thing I forgot to mention when first posting this. User controls are in different <asp:Content></asp:Content> controls (I edited upper example). If I put them in the same placeholder code works just fine. If I put them in the separate content placeholders I can't find them in any way with findcontrol. Why is that and how can I find them?

评论

please check below:

UserControl UC_text = (UserControl)this.NamingContainer.FindControl("text1");

The FindControl method does not do a deep search for controls. It looks directly in the location you specify for the control you're requesting.

In your case, what you'll need to do is something like:

UserControl UC_text = (UserControl)Content1.FindControl("text1");

You can also see my question here: IEnumerable and Recursion using yield return that demonstrates a method of finding deep controls by type.

Ok I found solution until better one comes my way. The problem is, as Jamie Dixon pointed out (thank you Jamie):

The FindControl method does not do a deep search for controls. It looks directly in the location you specify for the control you're requesting.

So because I have user controls in different contentplaceholders I must first find targeted placeholder (where the user control reside) and then I can search for user control inside it:

protected void Dodaj_Feed_Panel_Click(object sender, EventArgs e)
    {
        ContentPlaceHolder MySecondContent = (ContentPlaceHolder)this.Parent.Parent.FindControl("MyTestContent2");

        UserControl UC_text = (UserControl)MySecondContent.FindControl("text1");
        UC_text.Visible = true;
    }

what really annoys and confuses me is the this.Parent.Parent part because I know it's not the best solution (in case I change the hierarchy a bit this code will break). What this part of code actually does is that it goes two levels up in page hierarchy (that is page where both user controls are). I don't know what the difference with this.Page is because for me it means the same but is not working for me.

Long term solution would be something like server side "jQuery-like selectors" (it can found elements no matter where they are in hierarchy). Anyone has a better solution?

use the id of user control,then put the controls (e.g Textbox) inside panel then try this code from the main page

example:

TextBox txt = (TextBox)showbutton1.FindControl("Textbox1");

for updating with udpatepanel: TextBox txt = (TextBox)showbutton1.FindControl("Textbox1"); txt.Text="Hello World!";

((UpdatePanel)showbutton1.FindControl("UpdatePanel1")).Update();

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • asp.net 用户控件不会在 updatepanel 中触发 javascript(asp.net usercontrol won't fire javascript inside updatepanel)
    问题 我见过类似的问题和答案,但似乎没有一个能解决这个问题。 我在更新面板中有一个用户控件。 在我的用户控件中,我输出 javascript。 javascript 不会在触发时触发。 如果我将 javascript 移动到 usercontrol/updatepanels 之外的父页面,那么它就会触发。 这没有意义,因为我不能在另一个页面上使用这个用户控件而不复制代码......通过复制整个 javascript(不同的站点)或在它使用的每个页面中添加对 .js 文件的引用在(同一站点)。 它只是不那么便携 我只想输出带有控件的 javascript(在更新面板内)。 提到更新面板是为了确保我正在做的事情的准确性。 即使我将用户控件放在更新面板之外,它也不起作用。 保持简单(这对我不起作用): 用户控制: <%@ Control Language="C#" AutoEventWireup="true" CodeFile="_location.ascx.cs" Inherits="_location" %> <script type="text/javascript"> function test() { alert('Hello World!'); } </script> <a href="javascript:void(0);" onclick="javascript:test
  • 出现在我的文本框asp.net中的modalpopupextender和逗号(modalpopupextender and commas appearing in my textbox asp.net)
    问题 发生了一些奇怪的事情,我正在转换一个用于使用javascript的应用程序,以便在一个很小的窗口中打开另一个网页,以便使用ModalPopupExtender进行数据输入。 似乎工作正常,但是在OK事件中,当我执行txtData.Text(模式弹出窗口中的文本框)时,它在数据前返回一个逗号,因此,如果您键入“ Rabbit”,则返回为“ ,兔子”。 同样,当我多次使用它时,在另一个我可能单击以显示它的地方,然后键入“ Fish”,它开始返回诸如“,Rabbit ,, Fish”之类的内容。 我不知道为什么或如何阻止它执行此操作...有什么想法吗? 回答1 由于某种原因,如果文本框设置为ReadOnly,则似乎不会发生。 我在想可能有一种解决方法,即向用户显示可编辑的文本框,捕获其击键,并更新对用户隐藏的只读文本框。 仍然有些混乱,但是我无法回退到May的发行版,因为该发行版中还有一个ComboBox的错误需要避免! 更新: 作为背景知识,我在模式弹出窗口中有一个用户控件(ascx),因为我需要重用它。 ascx必须自己处理用户的输入(包含页面不知道控件内部发生了什么),因此当用户单击按钮时,我会进行回调并处理数据。 如果成功的结果返回给客户端回调函数,那么我将模拟单击包含页面认为是“ OK”按钮的按钮,该按钮实际上对用户是不可见的。 我已经更改了代码
  • 单击按钮后禁用页面刷新 ASP.NET(Disable page refresh after button click ASP.NET)
    问题 我有一个看起来像这样的 asp 按钮: 默认.aspx <asp:button id="button1" runat="server" Text="clickme" onclick="function" /> 默认.aspx.cs protected void function(object sender EventArgs e) { // Do some calculation } 但是,每当我按下按钮时,整个页面都会刷新。 我查看了这个站点并找到了许多解决方案,但没有一个真正适用于我的项目。 以下是一些建议的解决方案: 设置 onclick="返回假;" // 但是我如何在代码隐藏中运行该函数? 在 Page_Load 中使用 !IsPostBack // 但页面仍然完全刷新。 我根本不想调用 Page_Load。 禁用 AutoEventWireup。 // 使这个 true 或 false 没有区别。 有没有人有解决方案,或者真的不可能? 回答1 我会将控件放在“更新”面板中。 为此,您还需要在其上方安装一个脚本管理器,如下所示: <asp:ScriptManager runat="server" ID="sm"> </asp:ScriptManager> <asp:updatepanel runat="server"> <ContentTemplate> <asp
  • ASP.Net:具有内容区域的用户控件,这显然是可能的,但我需要一些详细信息(ASP.Net: User control with content area, it's clearly possible but I need some details)
    问题 对于我最初的问题,我是否看到了两个建议,即是否可以在用户控件内定义内容区域,还有一些有用的建议,即 将内容传递给ASP.NET用户控件 和 ASP.NET用户控件的内部内容 现在,仅出于美学原因,我比后者更喜欢后者的理论。 这对我来说似乎更有意义,但是给出的示例使用了应答者尚未在其示例代码中定义的两个变量content和templateContent。 没有这些细节,我发现该示例不起作用。 我猜它们是控件的属性吗? 还是一些这样的? 编辑-详情:我正在尝试做的事情 我需要一个ASP.Net用户控件,该控件将占位符隐藏在面板中的某些内容中,并要求在可见面板中输入代码。 本质上,用户会将其代码放入面板A中提供的文本框中并提交,然后对其进行检查;如果有效,则将显示面板B和锁定的内容。 我进行了一次测试,将内容硬编码到面板B中,但是一旦我需要将内容设为通用输入,它就会失败。 如果只是文本或类似内容,则可以将其设置为控件的属性,但实际上,实际上是另一个用户控件,因此将其放入“隐藏”面板有些困难。 也欢迎任何其他可行的解决方案。 编辑说明:我试图在2.0中实现的解决方案确实找到了我无法使用的3.5解决方案。 前一个示例似乎可行,但如果有人可以为我填补空白,我更喜欢使用后者。 谢谢。 回答1 好的,这很容易被打扰,但是网络上许多讨论这种事情的教程都试图做一些奢侈的事情
  • asp.net 在回发后动态添加用户控件保存值(asp.net dynamically added user control saving values after postback)
    问题 这是我的问题。 我有一个用户控件,我想允许用户根据需要使用按钮单击添加尽可能多的实例(每次单击按钮时,我想将我的用户控件的另一个实例添加到面板)。 第一次运行正常,但每次额外的回发都会删除所有添加的控件。 跟踪用户添加的用户控件数量没有问题,但我如何确保它们保持与回发之前相同的状态? 我读过一些关于人们使用 SaveViewState 和 LoadViewState 的帖子,但我找不到任何例子。 我最大的问题是确保每个用户控件的所有文本框和下拉列表在每次回发后都填充相同的文本/选定值/数据 提前致谢,本 回答1 由于您是以编程方式向页面添加控件,因此您需要在每次回发时重新创建它们。 此外,您有必要在页面的PreInit或Init事件上重新创建以编程方式添加的控件。 这是为了正确的视图状态恢复事件管理。 如果你不这样做,控制将在回发时消失,他们不会处理任何事件。 编辑 尽管建议在PreInit或Init上动态添加控件,但如果将它们添加到page_load上,它可能会起作用(正如 Dustin Hodges 所说)。 我会说你应该避免它,除非你别无选择。 您可能能够在 Page_Load 事件处理程序中加载您的控件并正确维护视图状态。 这完全取决于您是否以编程方式设置动态加载控件的任何属性,如果是,则取决于您何时相对于 Controls.Add(dynamicControl)
  • 在 ASP.net MVC 站点中查看 SSRS 报告(Viewing SSRS Reports in an ASP.net MVC Site)
    问题 有没有办法将 SQL Server Reporting Services 报表查看器控件放在 ASP.net MVC 视图上? 如果没有......实现这一目标的最佳方法是什么? 回答1 不,不是在 MVC 视图中。 但是您可以拥有一个 Web 表单页面,其中包含与您的 MVC 站点混合的服务器控件。 嗯,只是在谷歌上搜索“混合 asp.net mvc 和网络表单”以找到一些示例,谷歌质疑我是否是人类:) 无论如何,这里有一个链接 - http://www.packtpub.com/article/mixing-asp.net-webforms-and-asp.net-mvc - 那里有一些。 出于同样的原因,我也在 MVC 站点中完成了此操作 - 报告控件。 回答2 不,如果您将 ReportViewer 控件放置在 MVC 视图中,它将无法工作,因为它需要 ViewState。 您必须创建一个老式的 Web 表单并将 ReportViewer 放在那里。 我在一个项目中使用的一个解决方案是创建一个自定义路由处理程序,这样我仍然可以使用 URL 路由。 路由处理程序将从 RouteData 集合中获取诸如报告名称之类的参数,创建我的 Web 表单的一个实例,并通过公共属性将参数传递给它。 Web 表单将在 Page_Load 中读取这些内容并配置 ReportViewer
  • ASP.NET Web 用户控件库(ASP.NET Web User Control Library)
    问题 我们有一堆用户控件,我们想从 Web 应用程序中提取出来并放入单独的程序集/库中,我认为这就像创建一个类库并将 ascx 和 ascx.cs 文件拉入项目一样简单,并编译一个 DLL 以便在我们的应用程序中重用。 然而,情况并非如此。 我们的最终目标是拥有一个单独的可分发 DLL(类似于 Telerik 分发控件的方式),我们可以将其放入任何 Web 应用程序中。 此处的步骤:将 .ascx 用户控件转换为可再分发的自定义控件非常容易遵循,但是这会导致许多名为 controlname.ascx.guid.dll 的文件,这不是预期的结果。 我什至无法让这些工作无论如何,因为我们有额外的类需要编译到程序集中。 有没有人在 .NET 中成功创建了一个 web 用户控件库(我们在这里使用 3.5)? 我似乎找不到一个很好的分步指南。 回答1 如果您想在项目之间共享控件,我的经验表明最好的方法是构建自定义 asp.net 服务器控件而不是用户控件。 用户控件适合在同一个项目中共享,但不适用于多个项目。 为此,我建议您在类库中构建一组自定义服务器控件,并在您的所有项目中使用它。 这本书很好地解释了创建服务器控件的基础知识 编辑: 我目前正在开发一个 .net Web 服务器控件库。 我实际上没有遵循任何分步指南。 我主要考虑使用我上面提到的这本书和 MSDN library +
  • “无法修改控件集合,因为控件包含代码块”(“The Controls collection cannot be modified because the control contains code blocks”)
    问题 我试图创建一个简单的用户控件,它是一个滑块。 当我将AjaxToolkit SliderExtender添加到用户控件时,出现此错误(*&$#()@#错误: Server Error in '/' Application. The Controls collection cannot be modified because the control contains code blocks (i.e. `<% ... %>`). Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.Web.HttpException: The Controls collection cannot be modified because the control contains code blocks (i.e. `<% ... %>`). Source Error: An unhandled
  • ASP.NET MVC - 如何抛出一个类似于 StackOverflow 上的 404 页面(ASP.NET MVC - How to throw a 404 page similar to that on StackOverflow)
    问题 我目前有一个继承自System.Web.Mvc.Controller的 BaseController 类。 在那个类上,我有HandleError属性,它将用户重定向到“500 - 哎呀,我们搞砸了”页面。 这目前正在按预期工作。 这有效 <HandleError()> _ Public Class BaseController : Inherits System.Web.Mvc.Controller ''# do stuff End Class 我也有我的 404 页在 Per-ActionResult 的基础上工作,它再次按预期工作。 这有效 Function Details(ByVal id As Integer) As ActionResult Dim user As Domain.User = UserService.GetUserByID(id) If Not user Is Nothing Then Dim userviewmodel As Domain.UserViewModel = New Domain.UserViewModel(user) Return View(userviewmodel) Else ''# Because of RESTful URL's, some people will want to "hunt around" ''# for
  • jQuery $(document).ready和UpdatePanels?(jQuery $(document).ready and UpdatePanels?)
    问题 我正在使用jQuery在UpdatePanel内的元素上附加一些鼠标悬停效果。 这些事件绑定在$(document).ready 。 例如: $(function() { $('div._Foo').bind("mouseover", function(e) { // Do something exciting }); }); 当然,这在第一次加载页面时效果很好,但是当UpdatePanel执行部分页面更新时,它不会运行,并且鼠标悬停效果在UpdatePanel内部不再起作用。 不仅在首页加载时,而且在每次UpdatePanel触发部分页面更新时,建议在jQuery中进行接线的推荐方法是什么? 我应该使用ASP.NET ajax生命周期而不是$(document).ready吗? 回答1 UpdatePanel完全替换更新中更新面板的内容。 这意味着您订阅的那些事件不再被订阅,因为该更新面板中有新的元素。 解决此问题的方法是,在每次更新后重新订阅我需要的事件。 我使用$(document).ready()进行初始加载,然后使用Microsoft的PageRequestManager(如果页面上有更新面板,则可以使用)重新订阅每个更新。 $(document).ready(function() { // bind your jQuery events here
  • Programmatically Adding User Controls Inside An UpdatePanel(Programmatically Adding User Controls Inside An UpdatePanel)
    问题 我在通过部分回发在更新面板中动态添加控件时遇到麻烦。 我已经阅读了许多有关动态控件的文章,并且我了解如何通过回发添加和维护它们,但是大多数信息不适用,并且不适用于部分回发。 我找不到有关使用UpdatePanels添加和维护它们的任何有用信息。 如果可能的话,我想在不创建Web服务的情况下执行此操作。 是否有人对某些有用信息有任何想法或参考? 回答1 我认为,这是asp.net程序员的常见陷阱之一,但是当您知道发生了什么时(实际上要记住您的视图状态),实际上并没有那么难解决。 以下代码说明了如何完成操作。 这是一个简单的页面,用户可以在其中单击菜单,该菜单将触发一个操作,该操作会将用户控件添加到updatepanel中的页面。 (此代码是从这里借来的,并且具有有关此主题的更多信息) <%@ Page Language="C#" AutoEventWireup="true" CodeFile="SampleMenu1.aspx.cs" Inherits="SampleMenuPage1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http:/
  • 将某些页面功能或用户界面限制为 Asp.Net 中经过身份验证的用户(Restricting certain page functionality or user interface to authenticated users in Asp.Net)
    问题 我正在使用Asp.Net/C#来构建一个应用程序。我正在使用Forms Authentication 。我有一个要求,即我的许多经过authenticated (not anonymous) users仅限于某些页面功能或用户界面。我猜Login Control可以仅用于Authenticated vs Anonymous所以我的问题是,当我知道某些页面组件要对特定的经过身份验证的用户隐藏时,我该怎么做。你认为我需要在 page_load 事件上使用它来隐藏具有此类要求的页面的组件。 // Is this Tito visiting the page? string userName = User.Identity.Name; if (string.Compare(userName, "Tito", true) == 0) // This is Tito, SHOW the Delete column FilesGrid.Columns[1].Visible = true; else // This is NOT Tito, HIDE the Delete column FilesGrid.Columns[1].Visible = false; 有没有更好的方法来完成这个。非常感谢任何帮助。谢谢 回答1 在这里您可以使用 Membeship User 类和
  • 有没有办法使用 ASP.NET 代码隐藏将 Silverlight XAML 插入我的页面?(Is there a way to insert Silverlight XAML into my page using ASP.NET code-behind?)
    问题 所以,我想根据我的 ASP.NET 网页上的一些数据创建一些 Silverlight 图表。 这样做的方法,无论是使用 Visifire(我现在的东西)还是即将推出的 Silverlight 图表,似乎是创建一些 XAML,或者至少是一些 Silverlight 对象(就像在这个 Visifire 示例中一样),然后以某种方式将它们填充到页面中. 奇怪的是,做到这一点的唯一方法似乎是通过 JavaScript! 也就是说,我必须做这样的事情: 用户 -> 单击按钮 -> JavaScript 事件处理程序 -> AJAX 调用以从服务器端方法获取 XAML -> 将 XAML 字符串填充到客户端 HTML(通常像这样,或者像这样用于特定于 Visifire 的方法) . 这是非常违反直觉的! 我更希望能够在MyPage.aspx.cs做这样的事情: protected void MyButton_Click(object sender, EventArgs e) { this.MyFictionalSilverlightControl.Xaml = this.GenerateXamlFromData(); } 那会好很多! 我很高兴将MyFictionalSilverlightControl保留在UpdatePanel ,即使它效率低下;
  • 【开源】QuickPager ASP.NET2.0分页控件——使用示例、基本应用和查询功能
    分页控件的使用方法。有图片说明。 包括查询功能。 myPage分页控件发出来之后,虽然开源了,但是没有给一个简单一点的 demo,真是漏掉了一个很重要的部分。 先说明一下使用myPage分页控件需要的文件。 Controls.dll :这个是分页控件的dll文件,您可能要问,为什么不叫 myPage.dll呢?因为里面不仅有分页控件,还包含其他的控件,比如扩展功能的TextBox等控件,这是多个控件的集合,所以就叫做 Controls.dll 了。对应的有一个Controls.XML文件,里面放的是控件里的属性、函数、事件的提示说明。这个可以更方便使用。需要把这两个文件放在bin目录里面。提示效果: DataAccess2.0.dll :这个不属于分页控件,他是数据访问函数库的dll文件,因为分页控件要调用这里面的函数来提取数据,所以也需要把这个dll文件放在bin目录下面。他也有一个对应的 DataAccess2.0.xml 文件。 压缩包里的其他文件 vs200802.dll 这个是演示程序的 dll文件。 Default.aspx 这里就是分页控件的演示代码了。 要想写一个demo还真不是容易的事情,IDE就有两个,vs2005和vs2008,有都可以建立“网站”和“项目”,组合一下就是四种demo。我比较懒,给自己偷个懒吧,用vs2005写一个建立“网站”的demo
  • 在Asp.Net中动态添加的控件(Dynamically added controls in Asp.Net)
    问题 我试图把头包在asp.net上。 我有很长一段时间的php开发人员背景,但是现在我面临着学习asp.net的任务,并且遇到了一些麻烦。 这很可能是因为我正试图将框架强制用于其不适合的用途-所以我想学习如何以“正确的方式”进行操作。 :-) 我的问题是如何在运行时以编程方式向页面添加控件。 据我所知,您需要在page_init中创建控件,否则它们将在下一个PostBack中消失。 但是很多时候,我遇到的问题是我不知道要在page_init中添加哪个控件,因为它取决于以前的PostBack中的值。 一个简单的场景可能是在设计器中添加了下拉控件的表单。 下拉菜单设置为AutoPostBack。 当发生PostBack时,我需要呈现一个或多个依赖于下拉控件中所选值的控件,并且最好使这些控件的行为就像设计中添加的一样(如“发回时,表现为”正确”)。 我在这里走错了路吗? 回答1 我同意这里的其他观点:“如果您可以摆脱动态创建控件的行为,那就去做吧……”(@ Jesper Blad Jenson aka着),但这是我过去使用动态创建控件解决的一个技巧。 问题是鸡肉和鸡蛋。 您需要使用ViewState创建控件树,并且需要创建控件树才能获取ViewState。 好吧,那几乎是正确的。 有一种方法可以在填充树的其余部分获取ViewState值。 那是通过重写LoadViewState(
  • 用户控件事件处理程序在回发时丢失(user control event handler lost on postback)
    问题 我有一个名为 LeftMenu 的菜单用户控件,它有一个链接项的项目符号列表。 它在 ascx 页面上是这样的: <asp:BulletedList ID="PublisherList" DisplayMode="LinkButton" OnClick="PublisherList_Click" cssClass="Menu" runat="server"></asp:BulletedList> 我在if(!isPostBack)下对 page_load 中的列表进行数据绑定 我在加载控件的页面上遇到问题。 当页面第一次加载时,事件处理程序会触发。 但是,当页面回发时它不再触发并且在 IE8 中,当我调试时,我在 Visual Studio 中收到“Microsoft JScript 运行时错误:预期对象”,指向“__doPostBack('LeftMenu$PublisherList','0') .” 在 FF 中,我没有收到错误消息,但没有任何反应。 我没有动态加载控件,它使用以下命令加载到 aspx 页面上: <%@ Register TagPrefix="Standards" TagName="LeftMenu" Src="LeftMenu.ascx" %> <Standards:LeftMenu ID="LeftMenu" runat="server"/>
  • 来自UserControl的ASP.NET AJAX页面方法(ASP.NET AJAX Page Methods from UserControl)
    问题 我想通过用户控件使用ASP.NET AJAX页面方法功能。 有没有办法可以在后面的UserControl代码中指定我的静态[WebMethod],而不是后面的Page代码中指定我的静态[WebMethod]? 回答1 你可能做不到。 用户控件没有页面的所有功能,因此不能直接调用。 相反,您应该创建一个Web服务(asmx)来处理这种情况。 如果需要,可以将webservice调用路由到用户控件内的静态方法。 回答2 我一直在搜索很多东西,以找到在控件中放置静态WebMethods的一些解决方案。 代替寻找解决方案,我不得不自己做。 如果您希望能够更自然地执行此操作,请随时在此处查看(或直接跳至源代码)。 由于该解决方案是全新的,因此几乎没有文档,但是目前我是对此唯一感兴趣的人,因此没有什么理由让我全力以赴。 如果您有机会并且有兴趣,请告诉我您的想法。 回答3 TheXenocide给出的响应似乎可行,但是开发人员指出,“按原样提供ASP.NET AJAX的控制方法”,没有任何明示或暗示的担保或保证,包括对特定目的适用性,适销性和适用性的暗示保证。不侵权。” 如果您正在寻找长期解决方案,我会考虑使用Web服务方法。 要么不使用用户控件。 您可以使用iframe将aspx页面嵌套在另一个页面中。
  • ASP.NET RadioButton弄乱了名称(组名)(ASP.NET RadioButton messing with the name (groupname))
    问题 我有一个模板控件(一个中继器),列出了一些文本和其他标记。 每个项目都有一个与之关联的单选按钮,使用户可以选择由转发器创建的项目之一。 中继器会写入通过默认ASP.NET命名约定生成的单选按钮设置其ID和名称,从而使每个单选按钮成为完整的“组”。 这意味着所有单选按钮彼此独立,再次不幸的是,这意味着我可以同时选择所有单选按钮。 单选按钮具有用于设置通用名称的巧妙属性“ groupname”,因此它们被分组在一起,因此应该是依赖的(因此我一次只能选择一个)。 问题是-这不起作用-中继器确保id和名称(控制分组)不同。 由于我使用中继器(可能是列表视图或任何其他模板化的数据绑定控件),因此无法使用RadioButtonList。 那那把我留在哪里呢? 我知道我以前遇到过这个问题并已解决。 我知道几乎每个ASP.NET程序员都必须拥有它,所以为什么我不能用Google搜索并找到解决该问题的可靠方法? 我遇到了一些解决方案,这些解决方案要求通过JavaScript进行分组(很丑!),甚至将单选按钮作为非服务器控件进行处理,这迫使我执行Request.Form[name]来读取状态。 我还尝试了在PreRender事件上覆盖name属性的实验-不幸的是,拥有页面和母版页再次覆盖了此名称以反映完整的id /名称,因此我最终得到相同的错误结果。 如果您没有比我发布的解决方案更好的解决方案
  • asp.net: what's the page life cycle order of a control/page compared to a user contorl inside it?
    I have an aspx and inside it an ascx. From a short testing I see the PageLoad of the aspx is called before the PageLoad of the user-Control but the opposite is true for OnInit. Does someone know what is the order of the events (page compared to a user-control inside it) Thanks
  • 处理子 UIScrollView 中的触摸事件(Handling touch events within a child UIScrollView)
    问题 我在 UIScrollView 中显示一系列图像。 我非常想复制照片应用程序。 我目前的架构是: 父 UIScrollView 的内容大小足以容纳页数 + 一些额外的图像之间的边距空间。 每个图像都包含在 UIImageView 中。 每个 UIImageView 都包含在它自己的 UIScrollView 中,它们是父 UIScrollView 的子视图。 所以我基本上在父 UIScrollView 中有一行 UIScrollViews。 父 UIScrollView 启用了分页,因此我可以毫无问题地从页面滚动到页面。 问题是如何无缝地平移放大的图像。 我已经覆盖了viewForZoomingInScrollView方法以在用户捏入/缩小时返回适当的 UIImageView。 如果缩放比例大于 1,我已经覆盖了scrollViewDidEndZooming方法以将父视图的canCancelContentTouches属性设置为NO 。 因此用户可以平移图像。 但是,在将触摸事件向下发送到子视图之前,他们必须按住手指片刻以克服父滚动视图的小延迟。 此外,一旦用户在一个图像中平移,当用户到达当前图像的边界时,下一个/上一个图像不会进入可视区域。 有任何想法吗? 谢谢。 回答1 我不得不做一个类似的设置,但我基本上是自定义写了整个事情。 当您到达边缘时,我不确定您将如何解决从子