【发布时间】:2016-04-17 02:22:57
【问题描述】:
I have an aspx page of images that, when selected, a popup appears prompting for various information tid bits that I then store the information as data attributes on hidden labels through use of jQuery (i.e. data-id="####", data-difficulty="###", ETC。)。我承认这不一定是最好的方法,但我尝试了其他方法(见下文),但没有任何效果。
我一直在尝试检索动态更新的数据属性,但无济于事,以便可以将各种项目存储到我的本地 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 更新标签的属性之后(在一些点击等之后),我无法在后面的代码中获取更新的属性值。对此的任何提示或想法将不胜感激。
【问题讨论】:
-
为什么不只使用
<asp:HiddenField>?这样您就可以通过 js 在该字段中存储数据并在代码隐藏中检索。 -
嗯,这就是我目前正在做的事情。无论如何,我在页面上将标签设置为
display: none。我可以尝试一下,但考虑到它不适用于 HtmlImage 或 Label,我怀疑我是否还能从 HiddenField 中提取信息。