AspNetZero - индекс пользователя, просмотр эскиза изображения, вопрос - PullRequest
0 голосов
/ 10 октября 2018

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

Загрузка изображения и сохранение в таблицу бинарных объектов - все работает простоfine.

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

Когда представление индекса моего сотрудника отображается, миниатюра не отображается.Когда я нажимаю на миниатюру изображения, она открывает новую вкладку и выдает ошибку 404. Мой скопированный метод контроллера.

Вот код JS, который отображает миниатюру изображения в представлении users index:

targets: 1,
data: "userName",
render: function (userName, type, row, meta) {
var $container = $("<span/>");
   if (row.profilePictureId) {
       var profilePictureUrl = "/Profile/GetProfilePicture?t=" + row.profilePictureId;
       var $link = $("<a/>").attr("href", profilePictureUrl).attr("target", "_blank");
       var $img = $("<img/>")
        .addClass("img-circle")
        .attr("src", profilePictureUrl);
   $link.append($img);
   $container.append($link);
   }
   $container.append(userName);
   return $container[0].outerHTML;
  }

Вот тот же код в моем сотруднике индексном представлении:

 targets: 4,
 orderable: true,
 autoWidth: true,
 data: "fullName",
 render: function(fullName, type, row, meta) {
         var $container = $("<span/>");
          if (row.employeePictureId) {
             var profilePictureUrl = "/Employee/GetProfilePictureById?id=" + row.employeePictureId;
             var $link = $("<a/>").attr("href", profilePictureUrl).attr("target", "_blank");
             var $img = $("<img/>").addClass("img-circle").attr("src", profilePictureUrl);
       $link.append($img);
       $container.append($link);
     }
    $container.append(fullName);
    return $container[0].outerHTML;
     }

Строка кода, которая не работает, - это строка ProfilePictureUrl.

var profilePictureUrl = "/Employee/GetProfilePictureById?id=" + row.employeePictureId;

Если я заменим вышеуказанную строку на строку из пользовательского index.js и вызову метод контроллера профиля, он будет работать нормально.Но когда я пытаюсь вызвать метод контроллера моего сотрудника, он продолжает выдавать ошибку 404.Контроллер моего сотрудника находится на том же уровне в моем решении, что и контроллер профиля.Оба контроллера являются частью одной и той же области в моем приложении MVC.

1 Ответ

0 голосов
/ 11 октября 2018

Я просто решил мою проблему.Есть еще один контроллер профиля, который находится вне папки области.Таким образом, URL, используемый в index.js пользователей, не должен указывать полный путь.Пользовательская функция фотографий работает с контроллером профиля на корневом уровне приложения, а не с тем, который находится внутри области.В моем случае я должен был относиться к URL так же, как и ко всем модалам и скриптам, которые есть в моей области.Вот решение , которое сработало.

var empPhotoUrl = abp.appPath + 'AreaName/Employee/GetProfilePictureById?id=';
...