2017-06-03 6 views
0

をドロップダウン作成します。私は2つのビューモデルを持っているリストasp.netコア

public class PersonViewModel 
{ 
    public int Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public DateTime Dob { get; set; } 
    public string Email { get; set; } 
    public ICollection<PetViewModel> Pets { get; set; } 
} 

public class PetViewModel 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public int PersonId { get; set; } 
    public PersonViewModel Person { get; set; } 
} 

Iから選択するすべての人々のドロップダウンリストを持つようにしたいペットを編集/作成。

\\ Other methods omitted for brevity 

    [HttpGet] 
    public IActionResult Create() 
    { 
     var people = _personService.AsQueryable().ToList(); 
     ViewBag.PeopleList = new SelectList(people , "Id", "FirstName"); 
     return View(); 
    } 

    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public IActionResult Create([Bind("Id,Name,PersonId")] PetViewModel vm) 
    { 
     if (!ModelState.IsValid) return View(vm); 
     var pet = _petService.Create(vm.Name, vm.PersonId); 
     return RedirectToAction("Details", pet); 
    } 

私のようなビューで、次のViewBagを経由して、それをやろうとしてやっている:私は次のエラーを取得するやろうとしたら

@model UI.ViewModels.PetViewModel 

<h2>Create</h2> 

<form asp-action="Create"> 
    <div class="form-horizontal"> 
    <h4>Create a Pet</h4> 
    <div class="form-group"> 
     <label asp-for="PersonId" class="col-md-2 control-label"></label> 
     <div class="col-md-10"> 
      @Html.DropDownListFor(model => model.PersonId, ViewBag.PeopleList, "--Select--", new { @class = "form-control"}) 
      <span asp-validation-for="PersonId" class="text-danger"></span> 
     </div> 
    </div> 
    </div> 
</form> 

:これは私のペットのコントローラであるCannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type.

何か助けていただければ幸いです。ありがとう!

答えて

0

私は、次の手順を実行して、それを修正するために管理:

<div class="form-group"> 
     <label asp-for="PersonId" class="col-md-2 control-label"></label> 
     <div class="col-md-10"> 
      @Html.DropDownListFor(model => model.PersonId, (SelectList)ViewBag.PeopleList, "--Select--", new { @class = "form-control"}) 
      <span asp-validation-for="PersonId" class="text-danger"></span> 
     </div> 
    </div> 

私は私のHtml.DropDownList私のために問題を修正し(SelectList)ViewBag.PeopleListへの2番目のパラメータを変更し、SelectListViewBag.PeopleListをキャストされませんでした。

関連する問題