ASP.NET Core Call Web API от Razor View - PullRequest
       4

ASP.NET Core Call Web API от Razor View

0 голосов
/ 20 декабря 2018

Я создаю Razor View для майского макета веб-приложения.В моем макете я хочу получить фотографию пользователя в моем макете.Но проблема в том, как получить фотографию пользователя из веб-интерфейса 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);
}

, а вот мой Razor View

<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 View?Как?Спасибо

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Как объяснено перед ответом, Url.Action - неправильный способ получения фотографии из API в этом случае.

По моему мнению, в вашем методе GetEmployeePhoto нет ничего ненормального.Просто используйте прямой URL, например:

<img src="/api/v1/blob/employee-photo/18060001" />

Тем не менее, вы не получаете изображение, просто попробуйте выполнить следующие действия:

  • Установите точку останова для вашего метода.

  • Запросить непосредственно конечную точку API из браузера.

  • Если отладчик достигает точки останова, проверьте поведение вашего метода (ваш метод должен возвращать фотографию как загрузку).

  • Если ваш метод не работает так, как ожидалось, или возвращает ошибку, сообщите об этом здесь.

  • Если отладчик не достигает точки останова, просто проверьтеAPI-маршруты.

0 голосов
/ 20 декабря 2018

Если вы ищете @Url.Action() перегрузки метода расширения, вы увидите одну перегрузку, которая принимает строковый параметр, например так:

public static string Action(this Microsoft.AspNetCore.Mvc.IUrlHelper helper, string action)

action относится к фактическомуИмя метода действия (т.е. GetEmployeePhoto), а не URL-адрес API, заданный в HttpGetAttribute.Следовательно, этот URL-вызов API является неправильным и никогда не достигает действия контроллера API:

<img src="@Url.Action("/api/v1/blob/employee-photo/18060001")" />

. Для его работы следует использовать полную строку URL-адреса без @Url.Action() помощника:

<img src="/api/v1/blob/employee-photo/18060001" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...