答えを見つけることができず、MVC WepApiからJsonデータを取得し、ドロップダウンリストに送信することで問題を解決できません。上記のコードで.NET MVC Core Json/AsyncタスクSelectFC/IEnumerableを埋め込む
public async Task<IActionResult> GrabEmployees()
{
var item = new List<EmployeeViewModel>();
using (var employee = new HttpClient())
{
employee.BaseAddress = new Uri("http://localhost:5050/");
employee.DefaultRequestHeaders.Accept.Clear();
employee.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await employee.GetAsync("api/employees");
if (response.IsSuccessStatusCode)
{
item = await response.Content.ReadAsAsync<List<EmployeeViewModel>>();
}
}
return ViewBag.Employees = item.Select(employee => new SelectListItem { Value = employee.EmployeeNumber, Text = (employee.FirstName + " " + employee.LastName) });
}
だから私は:
私は次のエラーを取得する:
RuntimeBinderException: The best overloaded method match for 'Microsoft.AspNetCore.Mvc.Rendering.SelectList.SelectList(System.Collections.IEnumerable, string, string)' has some invalid arguments
私は、次のコードを使用してJSONデータをつかむ、このコードは今Controlllerに座っていますタスクを文字列、IEnumerable、JsonResult、私に同じエラーを与えるものすべての種類に設定しようとしました。それは私が非同期であることが原因である可能性があると信じさせる。私は知らないけど、私はJsonとMVC Coreの新人です。ここで
は私が見るに情報を渡す方法です。ここで
public IActionResult Assignments()
{
ViewData["Title"] = "Assign Asset";
ViewData["Message"] = "Use this section to assign assets to Employees.";
ViewBag.Employees = GrabEmployees();
ViewBag.Assets = AManger.GetAll();
//Allows to assign assets to employees
return View();
}
は、表示ページのコードです:
@model IEnumerable<Final.HRInventoryApp.Models.AssetViewModel>
<h2>@ViewData["Title"]</h2>
<h3>@ViewData["Message"]</h3>
@using (Html.BeginForm())
{
@Html.DropDownList("Asset", new SelectList(ViewBag.Assets, "Id", "TagNumber"))
@Html.DropDownList("EmployeeId", new SelectList(ViewBag.Employees, "Value", "Text"))
<input type="submit" id="buttonsubmit" value="Submit" />
}
私は混合の結果を取得しています。最初にアプリケーションを起動すると、ページがロードされ、ドロップダウンが入力されます。別のページをクリックしてそのページに戻ると、そのエラーで完全に失敗します。 これを修正するにはどうすればよいですか?
Shyjuは、返信用の感謝が、それはwork.If私は 'await'を使用し、それが、唯一async''で使用することができます待つことを述べていません'GrabEmployees()'を呼び出さなければ 'GrabEmployees()'は 'null'を返します。 – Chupacabra
'response.IsSuccessStatusCode'は' true'を返しますか? – Shyju
はい、 'true'を返し、データは' data'変数に渡されますが、 'Assignments'ビューを読み込むときに次のようになります。' InvalidOperationException: 'IEnumerable'型のViewData項目がありません。 key 'EmployeeNumber'.' –
Chupacabra