[英]ASP.NET image src question
我通过以下jquery代码设置图像控件的值:
$('.image').click(function () {
var imgPath = $(this).attr('src');
var imgName = imgPath.substring(0, imgPath.length - 4);
var imgAlt = $(this).attr('alt');
$('#<%= detailedImage.ClientID %>').
attr('src', imgName + '-large.jpg').
attr('alt', imgAlt);
图片在浏览器中完美显示。 但是我无法访问它的src
属性:
string imgName = detailedImage.Src;
imgName
始终是一个空字符串。 有什么建议么?
我确信有很多方法可以解决这个问题,这很大程度上取决于页面中其他地方和应用程序的因素,这些因素将有助于整体功能和用户体验。 但就建议而言,这是怎么回事:
而不是试图在图像控件中保持所选图像的状态,而是将其分离为不同的控件。 使用标准的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
,而不是显示隐藏字段。)
更改img
的src
,即使img
放在<form>
中也不会将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);
});
如果你现在在你的标记中有这样的东西:
<input type="hidden" id="ImageSource" runat="server" />
您应该能够检索ImageSource.Value
服务器端。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.