问题标签 [custom-server-controls]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
2354 浏览

c# - 如何将方法名称传递给 asp.net 中的自定义服务器控件?

我正在开发一个扩展另一个控件的客户服务器控件。附加到表单上的其他控件没有问题。

在 vb.net 中: Parent.FindControl(TargetControlName)

我想将一个方法传递给 ASPX 标记中的控件。

例如:<c:MyCustomerControl runat=server InitializeStuffCallback="InitializeStuff">

因此,我尝试使用反射从父级访问给定的方法名称。

类似的东西(在VB中)

找不到该方法,因为它不属于页面。我应该在哪里寻找?我很确定这是可能的,因为我看到其他控件也有类似的情况。


我忘了提一下,我的解决方法是提供控制事件并在代码隐藏中附加到它们。

0 投票
2 回答
1009 浏览

asp.net - UserControl 渲染:写入当前页面的链接?

我正在实现一个自定义控件,在这个控件中我需要编写一堆指向当前页面的链接,每个链接都有一个不同的查询参数。我需要保持现有查询字符串完整,并添加(或修改 的值)一个额外的查询项(例如“页面”):

等等

是否有一个简单的辅助方法可以在 Render 方法中使用……嗯……比如:

这将负责生成正确的 URL,维护现有的查询字符串项,并且不会创建重复项,例如。页=1&页=2&页=3?

把我自己的卷起来似乎是一项没有吸引力的任务。

0 投票
2 回答
1462 浏览

asp.net - ASP.NET 自定义控件和“动态”事件模型

好的,我不确定它的标题是否完全准确,欢迎提出建议!

我正在创建一个 ASP.NET 自定义控件,这对我来说还是比较新的东西,所以请多多包涵。

我正在考虑事件模型。由于我们没有使用 Web 控件,因此没有从按钮触发事件,而是使用适当的参数手动调用__doPostBack 。然而,这显然意味着在选择选项时会发生很多回发(选择时呈现不同的方式)。

随着时间的推移,我将需要使这更加 Ajax-y 和响应,因此我需要更改事件绑定以调用本地 Javascript。

所以,我在想我应该能够切换控件的“模式”,它可以使用回发和处理本身,或者您可以指定要调用的 Javascript 函数名称而不是 doPostBack。

  • 您对此有何看法?
  • 我是否以错误的方式从控件中引发事件?(在这里完全接受建议!)
  • 你会如何处理类似的问题?

编辑 - 澄清

  • 我正在创建一个自定义呈现控件(即从 WebControl 继承)。
  • 我们没有使用现有的 Web 控件,因为我们希望完全控制呈现的输出。
  • AFAIK 从自定义呈现的控件中获取服务器端事件的唯一方法是从呈现的元素调用 doPostBack (如果错误,请更正!)。
  • ASP.NET MVC 不是一个选项。
0 投票
2 回答
1296 浏览

asp.net - ASP.NET 自定义控件样式

我正在着手处理几个 ASP.NET 自定义控件。我想知道我是否可以就您如何将样式应用于控件的想法获得一些意见。

我宁愿把它推到 CSS 上,所以对于我过去做过的几个控件,我只是简单地粘贴了一个字符串属性,它允许你输入字符串,然后在渲染时将其挂在“样式”属性中。我知道我也可以使用“ CSSClass ”属性并应用“ class ”属性。

在创建“正确的” Style属性(您实际保存样式对象并使用设计器指定其值)的方式上,我没有做太多工作。这对我来说似乎需要做很多工作,而且 TBH,我讨厌样式编辑器 UI,更愿意输入 CSS/类名来应用..

您对此有何看法?


注意:这是一种主观的 - 所以要清楚:

接受的答案将是:

  • 提供各种方法的优缺点。
  • 欢迎发表意见,但好的答案应该是建设性的。
  • 用一些现实世界的知识/经验来支持它。

主观性没有错_ 人们主观而不思考,建设性或实际上提供一些洞察力和经验是有问题的。

>>不要<<将此标记为“主观”-该标记是浪费时间。“主观”不是人们会寻找的技术或类别。解决问题而不是刷掉它。

0 投票
5 回答
3009 浏览

asp.net - ASP.NET 自定义控件 - PostBack 的替代品?

在深入自定义 ASP.NET 控件开发的旅程中,我显然对 ASP.NET PostBack 模型及其对控件开发的影响有所了解。

我知道控件在 ASP.NET 中没有“生命周期”,因此必须在每次加载页面时重新初始化。我们通过将对象值/参数持久化到 ViewState 来克服这个问题。

因此,我阅读的许多文章都建议不要使用 PostBack,因为这会给页面增加相当大的开销。我不是在寻找如何禁用它,我知道。

我正在寻找的是:

除了使用 PostBack 模型来初始化控件之外,我们还有哪些替代方法?

我知道我们可以使用 QueryString,但这看起来非常混乱,而且显然不可靠。

理想情况下,您可以给我一个不同方法的架构/设计的概述以及它的优点/缺点。

非常感谢^_^

0 投票
4 回答
11404 浏览

asp.net - 将 CalendarExtender 动态添加到 Textbox 子类服务器控件?

我正在尝试创建一个从 TextBox 继承的服务器控件,它将自动附加一个CalendarExtender 。是否可以这样做,或者我的新控件是否需要从 CompositeControl 继承?我已经尝试过前者,但我不清楚应该在控件生命周期的哪个部分创建 CalendarExtender 的新实例,以及应该将它添加到哪个控件集合中。我似乎无法将它添加到 Page 或 Form 的控件集合中,如果我将它添加到 (TextBox) 控件的集合中,我将得不到任何弹出日历功能。

0 投票
4 回答
6525 浏览

c# - 自定义用户控件中的 ASP 嵌套标签

我刚刚开始使用 C# 中的自定义用户控件,我想知道是否有任何示例说明如何编写一个接受嵌套标签的示例?

例如,当您创建一个时,asp:repeater您可以为itemtemplate.

0 投票
1 回答
3127 浏览

asp.net - 如何使用集合属性构建 ASP.NET 自定义控件?

我想做类似的事情

实现这一目标所需的基本代码是什么?

里克的例子显示了类似于

如果可能的话,我更喜欢更简洁的语法。

注意:请随意提出更好的标题或描述。即使您没有编辑权限,我也很高兴为社区着想编辑条目。

0 投票
4 回答
3447 浏览

asp.net - ASP.NET 中自定义组合中的子控件初始化

我正在处理的一系列控件的一部分显然涉及我将其中的一些组合在一起。我很快开始了解到这需要考虑(这对我来说是全新的!):)

我基本上有一个StyledWindow控件,它本质上是一个Panel具有执行其他位(如添加边框等)的能力的荣耀。

这是在其中实例化子控件的代码。到目前为止,它似乎一直在使用普通的静态控件正常工作:

今天当我尝试在其中嵌套一个更复杂的控件时,问题就来了。该控件使用对页面的引用,因为它注入了 JavaScript 以使其更加灵活和响应迅速(这RegisterClientScriptBlock是我需要页面引用的唯一原因)。

现在,这导致了“object null”错误,但我将其本地化为 render 方法,它当然试图针对 [null]Page对象调用该方法。

令我困惑的是,该控件作为独立的控件可以正常工作,但是当放置在其中时StyledWindow,一切都变得非常错误!

所以,看起来我在 myStyledWindowChildControl. 有任何想法吗?

更新

正如Brad Wilson非常正确地指出的那样,您看不到控件被添加到Controls集合中。这就是_panel它的用途,它是为我处理的,基本上然后覆盖Controls(我从某处的指南中得到这个):

我希望这有助于澄清事情。道歉。

按照Longhorn213 的回答更新

是的,我一直在玩控件,将一个放在复合材料中,一个放在外面。然后我在控件生命周期中的 event major event 中获取 Page 的状态并将其呈现到页面。

独立运行正常,页面按预期启动。但是,嵌套在 Composite 中的那个是不同的。它的OnLoad事件根本没有被解雇!所以我猜布拉德可能是对的,因为我没有正确设置控制层次结构,任何人都可以就我所缺少的内容提供一些建议吗?Panel方法还不够吗?(好吧,显然不是吗?!):D

谢谢你们的帮助,不胜感激:)

0 投票
1 回答
128 浏览

c# - 有没有办法在工具箱中对我的自定义控件进行分类?

我已经在类库中构建了许多 asp.net 服务器控件,并且我希望当我团队的其他成员引用我的 dll 时,它们以某种方式分组。那可能吗?如何?