ASP.NET изображение src вопрос - PullRequest
       3

ASP.NET изображение src вопрос

1 голос
/ 27 сентября 2011

Я установил значение элемента управления изображением с помощью следующего кода 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 всегда пустая строка.Есть предложения?

Ответы [ 2 ]

2 голосов
/ 27 сентября 2011

Изменение src для img, даже если 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 на стороне сервера.

2 голосов
/ 27 сентября 2011

Я уверен, что есть несколько способов решить эту проблему, в значительной степени зависящих от факторов в других местах на вашей странице и от вашего приложения, которые могут внести вклад в общую функциональность и пользовательский опыт.Но с точки зрения предложений, как насчет этого:

Вместо того, чтобы пытаться сохранить состояние выбранного изображения в элементе управления изображением, выделите его в другой элемент управления.Используйте стандартный 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 в данном случае) и значения, которое серверсторонний код заботится о том, чтобы полностью установить его на другой элемент управления (в данном случае с идентификатором на стороне сервера imagePath).

Сейчас у меня нет возможности проверить это под рукой, но это предложение,Возможно, это может не сработать, и если это так, дайте мне знать, чтобы я мог изменить / удалить этот ответ.Но кажется, что это имеет смысл, учитывая, что такие элементы, как TextBox элементы управления ASP.NET имеют значение , означающее для изменения их значений на стороне клиента.(Действительно, в этом случае вам может повезти больше с стилем TextBox, который не будет отображаться, чем со скрытым полем.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...