[英]Asp.Net data attributes dynamically updated through JS/jQuery but the updated attributes aren't updated when retrieved through code behind
我有一个aspx页面的图像,当选择时,会出现一个弹出窗口,提示各种信息tid位,然后我通过使用jQuery将信息作为数据属性存储在隐藏标签上(即data-id="####"
, data-difficulty="###"
等)。 我承认这不是最好的方法,但我已经尝试了其他的东西(见下文),但还没有任何工作。
我一直在尝试,无济于事,检索动态更新的数据属性,以便各种项目可以存储到我的本地ms sql数据库。 更新属性非常有效,因为我可以在Chrome的开发者工具中正确查看正在更新的项目。 尽管如此,当我尝试拉出相同的属性时,我可以看到它被更新,我无法在后面的代码中检索更新的值并继续获取初始值(通常是空字符串“”)。
这是aspx页面上的实现:
<asp:Label runat="server" ID="lblSelection" data-id="" data-count="" data-price="" data-difficulty="" CssClass="selected-items" />
这是在同一页面上进一步向下点击“提交”按钮时调用的相关方法:
protected void SubmitClicked(object sender, EventArgs e)
{
var currentID = lblSelection.Attributes["data-id"];
var currentCount = lblSelection.Attributes["data-count"];
var currentPrice = lblSelection.Attributes["data-price"];
var currentDifficulty = lblSelection.Attributes["data-difficulty"];
if (currentID == null || currentID == "")
{
// stop and throw an informative message to the user
}else{
// keep processing ...
}
}
麻烦的是,当我在调试模式下运行项目并检查这些元素时(再次确保我可以直观地看到属性在开发人员工具中实际更新),它们都是“”的初始值。 我唯一的猜测是,有一些回发问题,但我不认为这会发生,直到我的方法被调用和完全处理。 作为一个注释,我正在将图像填充到页面上,并根据项目的ID通过sql调用更新其属性:
<img runat="server" src="" data-id="12345" />
初始加载都完美无缺,因此我可以从代码中清楚地设置属性。 无论出于何种原因,虽然在jQuery更新标签的属性(点击一些点击等等)后,我无法在后面的代码中获取更新的属性值。 任何有关此的提示或想法将不胜感激。
你想要做的事情是行不通的,因为:
自定义属性的值不回发到服务器(如讨论这里 )。
即使您在客户端代码中设置Label的文本,它也不会在代码隐藏中的Text
属性中可用。 Label在页面中呈现为span
元素,并且该类型元素的内容不会发布回服务器。
本主题中给出了回发中包含的一个很好的属性列表: 浏览器收集哪些值作为回发数据?
正如mshsayem所建议的那样,你应该使用HiddenFields。 如果出于某种原因,您希望以不同方式执行此操作,则可以使用隐藏的TextBox,在客户端代码中设置它们的value
,并使用代码隐藏中的Text
属性检索它。 换句话说:HiddenFields不是唯一可以在代码隐藏中检索客户端代码中设置的值的控件(但如果不显示控件,它们是显而易见的选择)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.