【发布时间】:2018-12-20 03:25:40
【问题描述】:
我为我的 Web 应用布局构建了一个 Razor 视图。在我的布局中,我想在我的布局中获取用户的照片。但是,问题是如何从 web api 中获取用户的照片并将其返回给 Razor View
这是我的 API 代码:
[HttpGet("employee-photo/{employeeId}")]
public async Task<IActionResult> GetEmployeePhoto(string employeeId)
{
var employeeIdClaim = this.UtilityService.GetEmployeeIdClaim(User);
if (employeeId != employeeIdClaim)
{
return null;
}
var employeePhoto = await this.FileStorage.GetEmployeePhoto(employeeId);
var name = employeeId + ".jpg";
return File(employeePhoto, "image/jpg", name);
}
这是我的剃刀视图
<a class="nav-link dropdown-toggle text-white" href="#" id="userDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img src="@Url.Action("/api/v1/blob/employee-photo/18060001")" /><span class="hidden-xs">@User.Claims.Where(Q => Q.Type == "FullName").Select(Q => Q.Value).FirstOrDefault()</span>
<i class="fa fa-caret-down"></i>
</a>
api/v1/blob 是我的 API 路径,我只是没有在这里写所有其他代码
我可以从我的 API 获取照片(图像)到我的 Razor 视图吗?如何?谢谢
【问题讨论】:
-
尝试在控制器内设置断点,是否到达该断点?如果调试器从未到达该断点,则可能您没有正确使用
Url.Action。 -
不,我试过了,它没有命中 api 是的,也许我没有正确使用 Url.Action,或者也许有另一种方法可以从视图中调用 api?
-
可能你应该直接使用路径而不使用
Url.Action,例如<img src="/api/v1/blob/employee-photo/18060001" />。由于您的 URL 路径使用属性路由,@Url.Action()似乎不适用,因为它需要正确的控制器和操作名称。 -
它不工作
-
控制器断点现在到达了吗?除了API URL本身还有其他设置错误,我认为此时图像仍然没有显示。
标签: asp.net asp.net-mvc api razor