繁体   English   中英

ASP.NET图像src问题

[英]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');
});

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

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

更改imgsrc ,即使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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM