![](/img/trans.png)
[英]asp.net mvc c# - Is it possible to access value of textbox in View from Model in CodeBehind?
[英]Access to div from codebehind who's outside a repeater Asp.net C#
我知道它可能很不正常,但是我想在CodeBehind的ItemDataBound中将htmlGenericControl添加到div(在转发器之外)中。
HtmlGenericControl slider = (HtmlGenericControl)e.Item.FindControl("slider");
htmlGenericControl input = new HtmlGenericControl("input");
input.Attributes.Add("type", "radio");
input.Attributes.Add("name", "slide_switch");
input.Attributes.Add("id", string.Format("projectImage-{0}", item.ProjectImageId));
slider.Controls.Add(input);
但每次都返回null 。 这是aspx代码:
<div class="slider">
<asp:Repeater ID="rptProjectImages" runat="server" OnItemDataBound="rptProjectImages_ItemDataBound">
<ItemTemplate>
</ItemTemplate>
</asp:Repeater>
</div>
与asp.net的合作时间过长,但这可能会有所帮助
<div id="myDiv" runat="server">...</div>
并且myDiv
应该可以访问。
此代码有几个问题。
首先,您的div仅限于客户端,从服务器端来看,它只是一个字符串。 使用以下命令将其转换为服务器端控制:
<div class="slider" runat="server" ID="slider">
其次, FindControl
仅查找直属子级,在您的情况下为转发器项的子级。 slider
不是其中之一。 而且,它不是转发器项目模板的一部分,应该可以像后面的代码中那样访问它,因此
slider.Controls.Add(...
除非您显示的slider
和转发器是某些“外部”控件的其他模板的一部分,否则这是必须的。 在这种情况下,请确保使用该“外部”控件来调用FindControl
。
最后,不要搞乱id
。 我敢打赌这将被ASP.NET覆盖,否则将导致页面出现问题。 而是将客户端ID模式设置为static并分配ID属性:
input.ClientIDMode = ClientIDMode.Static;
input.ID = string.Format("projectImage_{0}", item.ProjectImageId);
最终,它会为您所需的id
输出相同的值,但采用与ASP.NET兼容的方式。 不过请注意,我将“-”替换为“ _”-服务器端控件的ID中不能包含连字符
FindControl在另一个控件中查找控件,但这样做是在查找控件的ID。 您的“滑块”控件没有ID,它使用名为“滑块”的类,但没有ID。
您将需要定义控件为
<div runat="server" id="Slider" class="slider">
<asp:Repeater ID="rptProjectImages" runat="server" OnItemDataBound="rptProjectImages_ItemDataBound">
<ItemTemplate>
</ItemTemplate>
</asp:Repeater>
</div>
runat="server"
告诉框架在您后面的代码中实例化该控件。 id将是该控件的对象的名称。 然后在您的代码中,您可以执行
htmlGenericControl input = new HtmlGenericControl("input");
input.Attributes.Add("type", "radio");
input.Attributes.Add("name", "slide_switch");
input.ID = string.Format("projectImage-{0}", item.ProjectImageId);
Slider.Controls.Add(input);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.