添加 runat=服务器会从选择控件中删除样式
本文关键字:控件 删除 样式 选择 runat 服务器 添加 | 更新日期: 2023-09-27 18:30:55
我正在尝试使用此控件并能够从代码后端(cs文件)访问它。我从下面的代码开始,它有效:
$(document).ready(function () {
$("#foundImages").imagepicker({
hide_select: true,
show_label: true
});
});
<select id="foundImages" class="image-picker show-labels show-html">
<option data-img-label="Awww" data-img-src="http://placekitten.com/220/200" value="1">Cute Kitten 1</option>
<option data-img-label="Yeah" data-img-src="http://placekitten.com/180/200" value="2">Cute Kitten 2</option>
<option data-img-label="Ohai" data-img-src="http://placekitten.com/130/200" value="3">Cute Kitten 3</option>
<option data-img-label="Plop" data-img-src="http://placekitten.com/270/200" value="4">Cute Kitten 4</option>
</select>
但是当我向它添加runat="server"
,以便我可以从.cs文件访问它时,拖放控件看起来就像一个标准的组合框。知道为什么在添加runat="server"
时删除样式 - 或者有没有另一种方法可以从我的 cs 文件访问 <select>
控件?
谢谢!
如果将runat="server"
添加到选择中,则会将其转换为服务器端控件。在这种情况下,生成的 HTML 选择的 ID 将被foundImages.ClientID
(您可以使用查看源代码进行检查)。这意味着您必须更改此行:
$("#foundImages").imagepicker({
有了这一行:
$("#<%=foundImages.ClientID%>").imagepicker({
除了 'runat="server"'
,请尝试添加 'clientidmode="Static"'
。
有时,ASP.NET
会改变你的ID
,所以你的CSS
和JavaScript
可能看起来坏了。但是,通过将客户端 ID 模式设置为 'Static'
,您将强制ASP.NET
保留您的 ID。
从其他答案开始,正确说明 ID 可能会更改(除非设置了ClientIDMode
),解决您看到的问题的最简单方法是改用元素的 CSS 类。
您已经将类image-picker
分配给了下拉列表,因此没有理由不执行以下操作:
$(document).ready(function () {
$(".image-picker").imagepicker({
hide_select: true,
show_label: true
});
});
首先使用它进行控制
'clientidmode="Static"'
然后像这样从脚本获取控制权
$("#<%=img.ClientID%>").imagepicker({...});