问题标签 [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 投票
4 回答
5086 浏览

c# - 在派生自 Control 的 ASP.NET 自定义控件中呈现自关闭标记

我正在开发一个 Facebook FBML 控件库,并希望创建我的 FBML 控件,其模式有点类似于 ASP.NET WebControls 库。我有一个默认处理渲染的基类;这是我的渲染方法:

我想要的是基于 UseXfbmlSemantics 修改渲染 - 如果它是真的,它应该渲染,例如:

当它为 false 时,它​​应该使用自关闭标签呈现:

我可以让“真”条件几乎正常工作,但自闭合标签似乎与 Renderset 方法不兼容。不幸的是,如果是这种情况,这也意味着 AddAttributesToRender 模式也不起作用。它实际产生的是这样的:

如何获取 HtmlTextWriter(或我需要使用哪个 HtmlTextWriter)以使其呈现自闭合标签?或者,至少,我怎样才能让它不渲染那个中间空间(这样开始和结束标签就紧挨着)?

0 投票
2 回答
593 浏览

asp.net - 如何创建名称中带有破折号的 ASP.NET 自定义控件?

我想设置一个 ASP.NET 自定义控件,使其具有自定义名称,特别是其中带有连字符,因此它在标记中可能如下所示:

我不介意这种语法是否需要在 web.config 中设置标签映射或类似的东西,但tagMapping 元素与我想做的不太匹配。

0 投票
3 回答
6614 浏览

asp.net - 支持拖放的 ASP.NET Treeview 控件?

任何人都可以为 ASP.NET 推荐一个支持拖放的树视图组件(在它自己的节点之间 - 它用于内容管理系统重新排列页面)。不要介意它是开源的还是商业的(虽然不能完全延伸到Telerik 的树视图)。耻辱..

还有其他选择吗?谢谢。

0 投票
5 回答
16143 浏览

asp.net - ASP.NET 在嵌套在更新面板中的用户控件中注入 javascript

我正在尝试在更新面板的异步回发期间通过 Page.LoadControl 方法将带有用户 Web 控件的 javascript 代码加载到页面中。

我已经尝试了专门为该场景设计的脚本管理器方法,但是 javascript 并没有返回给用户。

为了更好地解释我的情况:

母版页有脚本管理器,一个页面在异步回发期间通过 Page.LoadControl 方法加载用户控件。自定义控件在预渲染事件处理程序中注入 javascript。这是注入js的时间问题还是不可能这样做?

0 投票
2 回答
3479 浏览

asp.net - 具有内置验证器的自定义文本框:服务器端验证未触发

我有一个看起来像这样的类:

这在始终启用 javascript 的内部应用程序中已经工作了一段时间。我最近注意到上游 javascript 错误可以阻止验证器触发,所以服务器端验证应该启动......对吗?对?

所以 Page.IsValid 属性总是返回 true (我什至尝试过事先显式调用 Page.Validate() )。

经过一番挖掘,我发现验证器 init 方法应该将验证器添加到页面中,但由于我构建它的方式,我认为这不会发生。因此,客户端验证有效,但服务器端验证无效。

我试过这个:

但是当然验证器在这里是空的(有时它不是必需的,所以不应该添加)......但是 OnInit() 对我来说做出这些决定真的很早(Required 属性不会从 ViewState 加载例如)。

想法?

0 投票
4 回答
2754 浏览

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

您如何创建自定义控件(不是 ASCX 控件),更重要的是,如何在您的项目中使用它?我不想为其创建单独的项目或将其编译为 DLL

0 投票
3 回答
3699 浏览

c# - ASP.NET Custom Server Control (GridView), DataBinding, and Control Lifecycle conflict

I have created a Custom Server Control (Inherited from GridView).

On the page, the GridView is DataBound to a DataSet, so I do not know at design time what columns will be present in my GridView.

Now, what I want to do is, to add a textbox in every Cell for the GridView Header row, and those textboxes will control column filtering. (textboxes are added using the GridView OnRowCreated method).

So far so good, the textboxes appear, and the filtering is working.

Problem is, after every postback, the Text value of the textboxes is lost. From my experimentations, this seems to be because I'm adding the textboxes too late in the Page/Control lifecycle.

How does one deal with this type of problem, where I would need to create and add the textboxes early in the Lifecycle (like, the GridView's OnInit), but adding the textboxes is dependant on information that is obtained later in the lifecycle?

0 投票
3 回答
8620 浏览

asp.net - 如何使用 StylePlaceHolder 和 Style 控件控制 ASP.NET 主题中的样式表

更新:这变成了一篇博客文章,带有更新的链接和代码,在我的博客上:https ://egilhansen.com/2008/12/01/how-to-take-control-of-style-sheets-in- asp-net-themes-with-the-styleplaceholder-and-style-control/


问题很简单。使用 ASP.NET 主题时,您对如何将样式表呈现到页面没有太多发言权。

渲染引擎使用 <link href=”...” 符号按字母顺序添加您在主题文件夹中的所有样式表。

我们都知道样式表的顺序很重要,幸运的是,asp.nets 的缺点可以通过在样式表前面加上 01、02、...、99 来规避,从而强制您想要的顺序(参见 Rusty Swayne上的博客文章更多信息的技术)。

如果您使用我强烈推荐的重置样式表,这一点尤其重要;它使跨浏览器以一致的形式对站点进行样式设置变得更加容易(请查看来自 Eric Meyer 的 Reset Reloaded)。

您也错过了指定媒体类型(例如屏幕、印刷、投影、盲文、语音)的可能性。如果您更喜欢使用 @import 方法包含样式表,那么您也会被冷落。

另一个缺少的选项是条件注释,如果您使用“ie-fix.css”样式表,它特别有用。

在我解释 StylePlaceholder 和 Style 控件如何解决上述问题之前,我的解决方案受到Per Zimmerman关于该主题的博客文章的启发。

StylePlaceHolder 控件放置在母版页或页面的页眉部分。它可以承载一个或多个 Style 控件,并且默认会移除渲染引擎添加的样式,并添加自己的样式(它只会移除从当前活动主题中添加的样式)。

Style 控件既可以在其开始和结束标记之间托管内联样式,也可以通过其 CssUrl 属性对外部样式表文件的引用。使用其他属性,您可以控制样式表呈现给页面的方式。

让我举个例子。考虑一个简单的网站项目,它有一个母版页和一个包含三个样式表的主题——01reset.css、02style.css、99iefix.cs。注意:我使用前面描述的前缀技术命名它们,因为它可以提供更好的设计时体验。此外,自定义控件的标签前缀是“ass:”。

在母版页的标题部分中,添加:

在您的主题目录中,添加一个皮肤文件(例如 Styles.skin)并添加以下内容:

基本上就是这样。Style 控件上有更多属性可用于控制渲染,但这是基本设置。有了它,您可以轻松添加另一个主题并替换所有样式,因为您只需要包含不同的皮肤文件。

现在到使这一切发生的代码。我必须承认设计时体验有一些怪癖。可能是因为我写自定义控件不是很熟练(其实这两个是我第一次尝试),所以很想在下面输入。在我正在开发的当前基于 WCAB/WCSF 的项目中,我在 Visual Studios 设计视图中看到了这样的错误,我不知道为什么。该网站编译,一切都在线运行。

Visual Studio 中的设计时错误示例 http://www.egil.dk/wp-content/styleplaceholder-error.jpg

以下是 StylePlaceHolder 控件的代码:

以及 Style 控件的代码:

那你们怎么看?这是解决 asp.net 主题问题的好方法吗?那代码呢?我真的很想对此进行一些输入,尤其是在设计时体验方面。

我上传了包含该项目的 Visual Studio 解决方案的压缩版本,以防有人感兴趣。

最好的问候,埃吉尔。

0 投票
1 回答
2838 浏览

c# - 创建一个 Rich Repeater,DataBind 清除自定义添加的控件

所以...我有一个聪明的想法,我会创建自己的 Repeater 控件,通过继承 Repeater 并扩展它的功能来实现分页和排序。我找到了一些关于如何解决这个问题的信息和点点滴滴,一切似乎都很好......

我创建了一个 WebControlLibrary 来存放我的自定义控件。除了丰富的转发器,我还创建了一个复合控件,它可以充当“分页栏”,具有前进、后退和页面选择。我的寻呼栏 100% 自己工作,当用户与之交互时正确触发分页更改事件。丰富的转发器数据绑定没有问题,但是当数据绑定触发时(当我调用 base.databind() 时),控件集合被清除并且我的寻呼栏被移除。这搞砸了寻呼栏的视图状态,使它们无法正确触发事件或维持其状态。

我尝试在 base.databind() 触发后将控件添加回集合,但这并不能解决问题。我开始得到非常奇怪的结果,包括更改控制树层次结构的问题(通过添加 [ViewStateModeById] 解决)。

在我回到绘图板并创建第二个复合控件之前,它包含一个中继器和寻呼栏(这样中继器不负责寻呼栏的视图状态),有没有关于如何解决问题的想法?

为了共享和共享的利益,转发器本身的代码如下,分页栏并不重要,因为问题实际上是维护任何其他子控件的状态。(原谅一些代码的粗糙......它仍在进行中)

0 投票
3 回答
633 浏览

asp.net - 在属性窗口中显示可用的强类型资源类

作为我第一次尝试创建自定义控件,我正在扩展 Gridview Web 控件。

作为扩展的一部分,我将网格列标题的本地化封装在控件中。除其他外,我公开了几个属性来启用此功能:

bool AutoLocalizeColumnHeaders - 启用该功能

string HeaderResourceFile - 标识一个强类型资源类,从中获取标题文本

我正在重写 OnRowDataBound 处理程序并使用反射获取适当的 ResourceManager 来填充标题文本。这一切都很好,但我想在属性窗口中显示可用的强类型资源类列表供用户选择,而不是他们必须手动输入名称。

我创建了一个 TypeConverter 来显示一个下拉列表,在该下拉列表中显示可用的类,但不知道如何获取要显示的可用类名列表?

我已经尝试了很长一段时间没有成功,并且正处于失去理智的地步。我假设必须有某种方法可以使用反射来实现这一点?