为了实现“概要图”功能,我复制了AspNetZero解决方案中使用的所有代码。我指的是允许用户上传自己照片的功能。我已经将现有的模式、JS文件和控制器方法分别复制到我的employee控制器和employee文件夹中,因为我需要相同的功能。
上传图像和保存到二进制对象表都很好。
当我试图在员工索引视图datatable列中显示上传照片的缩略图时,就会出现这个问题。我从解决方案中的用户索引视图中复制了此功能。
呈现“员工索引”视图时,不会出现缩略图。当我单击图像缩略图时,它将打开新的选项卡,并为复制的控制器方法抛出404错误。
以下是在用户索引视图中显示缩略图的JS代码:
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;
}下面是我的employee索引视图中的相同代码:
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中的行替换上面的行,并调用profile控制器方法,它就可以正常工作了。但是,当我试图调用员工控制器方法时,它总是抛出404错误。我的员工控制器与配置文件控制器在解决方案中的级别相同。在我的MVC应用程序中,两个控制器都是同一区域的一部分。
发布于 2018-10-11 02:44:06
我刚刚解决了的问题。还有另一个配置文件控制器位于区域文件夹之外。因此,用户index.js中使用的URL不需要提到完整的路径。用户的照片功能是在应用程序的根级访问配置文件控制器,而不是在应用程序的内部。在我的例子中,我必须处理URL,就像对待我所在区域的所有调制解调器和脚本一样。下面是有效的解决方案。
var empPhotoUrl = abp.appPath + 'AreaName/Employee/GetProfilePictureById?id=';https://stackoverflow.com/questions/52732677
复制相似问题