ASP.NET图像src问题
我通过以下jquery代码设置图像控件的值:
$('.image').click(function () { var imgPath = $(this).attr('src'); var imgName = imgPath.substring(0, imgPath.length - 4); var imgAlt = $(this).attr('alt'); $('#'). attr('src', imgName + '-large.jpg'). attr('alt', imgAlt);
图片在浏览器中完美显示。 但是我无法访问它的src
属性:
string imgName = detailedImage.Src;
imgName
始终是一个空字符串。 有什么建议?
更改img
的src
,即使img
放在
中也不会将src
提交给服务器。 您需要将新src
设置为将在表单中提交的内容,即隐藏字段。 试试这个:
$('.image').click(function () { var imgPath = $(this).attr('src'); var imgName = imgPath.substring(0, imgPath.length - 4); var imgAlt = $(this).attr('alt'); var src = imgName + '-large.jpg'; $('#<%= detailedImage.ClientID %>'). attr('src', src). attr('alt', imgAlt); $('#<%= hiddenInput.ClientID %>').val(src); });
如果你现在在你的标记中有这样的东西:
您应该能够检索ImageSource.Value
服务器端。
我确信有很多方法可以解决这个问题,这很大程度上取决于页面中其他地方的因素以及有助于整体function和用户体验的应用程序。 但就建议而言,这是怎么回事:
而不是试图在图像控件中保持所选图像的状态,而是将其分离为不同的控件。 使用标准的img
HTML元素在客户端向用户显示图像,并将其保留为仅用户体验问题。 不要将它用作表单的一部分。
然后创建一个单独的控件(隐藏字段,已设置为不显示样式的文本框等),并将图像文件的路径设置为JavaScript中该控件的值。 像这样的东西:
$('.image').click(function () { var imgPath = $(this).attr('src'); var imgName = imgPath.substring(0, imgPath.length - 4); var imgAlt = $(this).attr('alt'); $('#showImage').attr('src', imgName + '-large.jpg').attr('alt', imgAlt); $('#<%= imagePath.ClientID %>').val(imgName + '-large.jpg'); });
请注意, src
和alt
是在标准img
标记上设置的(在本例中为id showImage
),服务器端代码关心的值完全在另一个控件上设置(在这种情况下使用服务器端id imagePath
)。
我现在没有办法测试这个,但这是一个建议。 它可能无法正常工作,如果是这种情况让我知道,我可以修改/删除这个答案。 但似乎它是有意义的,因为像TextBox
ASP.NET控件这样的东西意味着在客户端修改它们的值。 (事实上,在这种情况下,你可能会更好地使用TextBox
,而不是显示隐藏字段。)