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始终是一个空字符串。 有什么建议?

更改imgsrc ,即使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'); }); 

请注意, srcalt是在标准img标记上设置的(在本例中为id showImage ),服务器端代码关心的值完全在另一个控件上设置(在这种情况下使用服务器端id imagePath )。

我现在没有办法测试这个,但这是一个建议。 它可能无法正常工作,如果是这种情况让我知道,我可以修改/删除这个答案。 但似乎它是有意义的,因为像TextBox ASP.NET控件这样的东西意味着在客户端修改它们的值。 (事实上​​,在这种情况下,你可能会更好地使用TextBox ,而不是显示隐藏字段。)