Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在JQuery内部转发器中获取HiddenField_C#_Jquery_Asp.net - Fatal编程技术网

C# 在JQuery内部转发器中获取HiddenField

C# 在JQuery内部转发器中获取HiddenField,c#,jquery,asp.net,C#,Jquery,Asp.net,我有一个中继器控件,我需要访问里面的隐藏字段。我不能使用: <%= Control.ID.ClientID %> 我也不能使用class或cssclass属性 所以我的问题很简单,我如何访问中继器内的HiddenField控件 我的场景是填充一个多选下拉列表,我需要在更新函数中知道我选择了哪些元素,为此,我使用HiddenField来存储Id。然后在code behind中,我可以访问HiddenField值并进行propor数据绑定。HiddenField控制元素被呈现到输入

我有一个中继器控件,我需要访问里面的隐藏字段。我不能使用:

<%= Control.ID.ClientID %>

我也不能使用class或cssclass属性

所以我的问题很简单,我如何访问中继器内的HiddenField控件


我的场景是填充一个多选下拉列表,我需要在更新函数中知道我选择了哪些元素,为此,我使用HiddenField来存储Id。然后在code behind中,我可以访问HiddenField值并进行propor数据绑定。

HiddenField
控制元素被呈现到
输入
s类型的
隐藏
,因此,尽管不能完全理解应用程序有限的模糊场景,但您可以在jQuery中使用如下选择器访问它们:

$("input[type=hidden]")
根据您的情况,您可能希望进一步约束该选择器

然而,这主要关注于标记的包含,尽管您的示例似乎希望使用内联ASP.NET脚本来使用托管代码。请澄清您的意图和最终目标。

您可以使用类选择器
在隐藏字段上放置一个类。
multiselectable
的事件发生时,找到相应的隐藏字段并设置其值

编辑-1 我建议你在
多选下拉列表中放置一个类,比如
ddl

在此multiselect上绑定jquery on change方法。
使用jquery
parent
prev
选择器,可以在隐藏字段中设置值

埃克斯马普

     $(".ddl").change( function(){
        $(this).parent().next().find("input:hidden").val($(".ddl").val());
    });
这只是我的想法和方法

编辑2 下面是一个关于如何在隐藏字段上使用
css类的好例子。


我找到了一个其实很简单的解决方案:)

我在中继器内的HiddenField上使用了ClientIDMode属性:

<asp:HiddenField ID="HiddenField_Pladser" runat="server" Value="Selected" ClientIDMode="Static" />
从后面的代码中,我从中继器中了解到ItemIndex,这使得使用以下代码创建数据收集变得非常容易:

var data = from RepeaterItem item in rpPladser.Items
                   let hidden = ((HiddenField)item.FindControl("HiddenField_Pladser"))
                   select new
                              {
                                  selected = hidden.Value
                              };

如果此实现存在缺陷或存在问题,请发表评论。

“System.Web.UI.WebControls.HiddenField”没有名为“CssClass”或“class”的公共属性谢谢@harshittailer ok我不知道这一点。但他可以将它包装到一个容器中,并在其上放置一个类。我找到了另一个解决方案,你可以在我自己的answare中看到它的实现。但是谢谢你,answar:)你能提供生成的htmlI吗?我找到了一个解决我问题的方法,看看我自己的answar,我能用上面的方法找到控制。但我找到了另一个解决办法。我使用了属性'ClientIDMode=“Static',然后我可以在JQuery中使用ID作为标识符。请参阅我自己的answar以获得实现。如果你可以使用静态标识符,那么肯定可以(ASP.NET的冗长ID自其诞生以来一直是web的祸根),它将使此任务和其他任务更简单、更自然。唯一需要注意的是,这仅在.NET 4.0以后的版本中可用,因此请确保您的主机将支持它。我不知道它是4.0功能,可能因此我以前没有见过它。我的主机支持4.0,因此这不是问题:)
var data = from RepeaterItem item in rpPladser.Items
                   let hidden = ((HiddenField)item.FindControl("HiddenField_Pladser"))
                   select new
                              {
                                  selected = hidden.Value
                              };