나는 웹 API를 가지고 있으며 컨트롤러에서 일부 데이터를 가져와보기에 표시하려고합니다.비동기 작업을 사용하여 데이터를 가져 와서보기에 표시하는 방법은 무엇입니까?
이 내 메인 클래스입니다 :
하나 : 나는 두 개의 컨트롤러와 내 수업을 테스트
public class APISrv
{
public string result = string.Empty;
public async Task<string> GetIT()
{
try
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:2474/");
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(new
MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage Res = await
client.GetAsync("api/Test/Get");
if (Res.IsSuccessStatusCode)
{
result = Res.Content.ReadAsStringAsync().Result;
}
}
}
catch (Exception err)
{
result=err.Message;
}
return result;
}
}
이 원인 "결과"에
public ActionResult Index()
{
APISrv aPISrv = new APISrv();
aPISrv.GetIT();
ViewData["mydata"] = aPISrv.result;
return View();
}
공공 필드 항상 비어 있습니다, 그것은 메인 스레드가 비동기 메서드는 work.i 내 view를 볼 수 있지만 "ViewData ["mydata "]"비어 있습니다 기다리는 것 같습니다. 초에
이의
public ActionResult Index()
{
APISrv aPISrv = new APISrv();
ViewData["mydata"] = aPISrv.GetIT().Result;
return View();
}
모드 "지역 ... 기다리고"내 페이지 체류의 원인이 아무것도 작동하지 않습니다.
수업에서 데이터를 가져 오는 가장 좋은 방법은 무엇입니까?
도와 주셔서 고맙습니다. 코드가 멋지지만, 짧은 PLZ로 나를 쓸 수 있습니다. 내 컨트롤러를 정상 모드에서 변경하고 싶지 않으면 어떻게 처리 할 수 있습니까? 내 컨트롤러는 "ActionResult"를 반환하지 않습니다. "작업"? –
motevalizadeh