问题标签 [naming-containers]

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 投票
1 回答
1532 浏览

jsf - 在 p:radioButton 的 for-Attribute 中引用一个 id

是否可以引用一个 id 来标识作为 parent-parent-naming 容器的子组件的组件?

例如:

我想selectedFolder从 for 属性中引用 id <p:radioButton>。但既然<ui:repeat>是 a NamingContainerselectedFolder就存在于另一个中NamingContainer,我看不出如何引用它。是否可以写类似的东西for="../selectedFolder"

我不能使用绝对 id 引用,因为这是复合组件的一部分。我也尝试过使用prependId="false"in <ui:repeat>,但没有奏效。

0 投票
1 回答
801 浏览

c# - 如何使用 INamingContainer 创建自定义控件?

我正在尝试以下操作:

我的容器类:

我的标记:

但是由于某种原因Container.Index没有渲染任何值,只是空的。正在创建 10 个控件,但没有一个显示值。

我做错什么了?我该如何修复它以显示Index价值?

我尝试了类似于 MSDN 示例的方法:

0 投票
1 回答
2951 浏览

c# - 在服务器控件中动态创建 CustomValidator

我有一个自定义服务器控件,它包装了一个 RadEditor(基本上是一个文本区域)。我正在尝试动态添加一个 CustomValidator ,但我在初始页面加载时不断收到此错误

找不到“”的“ControlToValidate”属性引用的控件 ID“RadEditor1”。

这是我在服务器控件中用于创建 CustomValidator 的代码:

0 投票
1 回答
2914 浏览

jsf - 如何通过 clientId 访问复合组件的兄弟

我有一个捆绑了一些输入字段的复合组件。该组件将在一个页面上多次使用,并包含一个按钮来复制这些组件中另一个的值。为此,我需要通过其 clientId 访问其中一个兄弟姐妹作为

<f:ajax execute=":XXX:siblingId" render="...">

我的问题在于构建这个ID。我有兄弟姐妹的名字,我可以确保它与包含复制按钮的组件位于同一个命名容器中,但我无法控制完整的嵌套层次结构,所以它可能是:form:foo:bar:parent:child或只是form:parent:child. 所以基本上我想获取当前复合组件的前缀,但没有组件自己的 ID,然后附加要从中复制的组件的 ID。

这类似于以下问题:

但是,这两个答案都使用了 PrimeFaces 特定的功能,例如@parentwidgetVar,这不适用于我的项目。

在尝试 EL 的隐式对象时,我基本上尝试了与第二个问题的海报相同的东西——结果相同:cc.parent.clientId总是空的。我也尝试cc.namingContainer.clientId了两者的一些组合,唉 - 没有成功。parent特别是不能按预期工作的事实让我感到困惑......

那么:是否有一种与组件库无关的方式来访问包含复合组件命名容器的“路径”?对象应该如何parent工作,尤其是:我们什么时候可以使用它,什么时候不可以?

PS:我正在考虑使用组合的完整 clientId,然后用 修剪其实际 ID fn:split,但是,如果有更直接的方式,我会很乐意使用它。

0 投票
1 回答
450 浏览

ajax - component.namingContainer.parent 跳过 h:form

我做了一个复合组件,里面是一个<f:ajax>标签,它的“render”属性是cc的一个参数。

像这样的东西:

我在一个表单中使用这个 cc,那已经在一个外部命名容器中:

问题是,如果我写

我收到此错误:

而如果我使用这个(+ .parent):

错误是:

而不是预期的ID:

所以看起来我的cc命名容器的父级不是表单,而是外部命名容器

有什么办法:1,获得正确的父(表单)2,在我将EL作为参数传递之前评估EL(所以我可以将计算出的clientId传递给我的cc而不是EL表达式,所以组件不会引用到 commandLink 标签,但到 h:form 我把我的抄送)

我知道我可以使用

但我不喜欢那个解决方案

此外,将表单的 prependId 属性设置为 false 会破坏整个组件的查找(结果也会导致 ajax 标记)

0 投票
1 回答
932 浏览

asp.net - 从内容页面中动态创建的输入控件中检索表单数据

我会相信这个问题有一个明显的答案,但我似乎找不到任何答案。我有一个 ASP.Net MasterPage,它有一个内容页面,其中有几个动态创建的输入控件。当我发布包含它们的表单时,我想检索它们的值。这只能使用控件的 name 属性并调用 Request.Form[name]。

由于输入控件是 ContentPlaceHolder 的一部分,因此它们的 name 属性被分配了控件的 UniqueId,它是一个可能如下所示的字符串,例如:“ctl00$skts_body_div$MyNameId”。

上面例子中的名字不是随机生成的名字,而是依赖于父控件的结构,所以在回发中生成名字“ctl00$skts_body_div$MyNameId”并不容易,所以我可以调用Request.Form["ctl00$skts_body_div$MyNameId"]。

检索已发布数据的最佳实践方式是什么?

该平台是.Net 4.0

感谢圣战

0 投票
2 回答
14602 浏览

asp.net - ASP.Net - 命名容器和 ClientIDMode="Static"

MSDN 文档中关于 ClientIdMode 的说明:

静态 ClientID 值设置为 ID 属性的值。如果控件是命名容器,则该控件用作它所包含的任何控件的命名容器层次结构的顶部。

来源:http: //msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode%28v=vs.100%29.aspx

但是,我并没有发现“层次结构的顶部”业务就是这种情况。例如,我有一个用户控件:

为了更好地衡量,我也在控制源中设置了 clientidmode,尽管我不确定需要哪一个:

在用户控件中,我有一个文本框:

我的期望是文本框将被命名为WidgetsListControl$testTextBox

但是,我在查看源代码时发现的是:

我错过了什么?有没有一种方法可以实现我正在寻找的(较短的 id),而无需在用户控件中的每个控件上设置“静态”?

编辑:

实际上,仔细观察后,我发现 ID 属性的工作方式与 MSDN 中描述的一样 - 但是 name 属性仍然是命名容器层次结构的完整串联。

给定一个高度复杂的站点,这些控件的名称和 ID 开始占用大部分带宽(标记大小)。我似乎找不到任何好的解决方法来减少这方面的标记。

0 投票
3 回答
697 浏览

jsf - 如何实现 NamingContainer?所有孩子都获得相同的客户 ID

我尝试编写自己的树组件。树节点呈现为包含树组件的子组件的 div,例如:

到目前为止,一切都很好 - 一切都按预期工作,但h:outputText重复获得相同的 id。
所以我让我的组件实现javax.faces.NamingController,覆盖getContainerClientId()

index在节点迭代期间设置和更新。但是getContainerClientId()每个孩子只调用一次(而不是每个迭代和每个孩子,如我所料)。这会导致每个子 id 都以相同的容器 id 为前缀:

覆盖也是一样getClientId()

我错过了什么?

0 投票
1 回答
7498 浏览

jsf - 实现 NamingContainer 的组件列表

我发现NamingContainerJSF中有一个东西叫。不清楚哪个组件是命名容器。据我所知,<h:form><h:dataTable>自定义组件是命名容器。

我在哪里可以获得实现的类的列表javax.faces.component.NamingContainer

0 投票
0 回答
640 浏览

c# - 中继器项目找不到 NamingContainer

我最近将中继器中的 ComboBox 切换为 SuggestComboBox(找到:here),因为它是包含搜索而不是开头搜索。以前,我使用该 ComboBox 的 NamingContainer 来查找附近的元素。我的新 SuggestComboBox 没有这个值,但是在我对这个问题的研究中,看起来中继器的所有孩子都应该已经有了这个值?

“NamingContainer 属性在代码中可用于该类或派生类的任何实例。” (发现:这里

我错过了什么?

这是我的中继器:

这是我试图访问其他元素的函数: