0

My select taghelperは、選択したアイテムをコントローラに渡しません。カウントは常に0です。いずれの方向にも感謝します。 マイモデル.net core 1.1 select taghelper pass mulitpleコントローラにリストアイテムを選択すると常にカウントが表示されます0

namespace SandBoxSelectList.Models 
{ 

public class Entry 
{ 
    [Key] 
    public int EntryID { get; set; } 

    public string EventName { get; set; } 


    public List<EntryClass> EntryClasses { get; set; } 

} 
public class EntryClass 
{ 
    [Key] 
    public int EntryClassId { get; set; } 

    public string ClassName { get; set; } 
    public int Classcode { get; set; } 

} 
} 

マイコントローラー

 // GET: Entries/Create 
     var ec = new List<EntryClass> 
     { 
      new EntryClass 
      { 
       Classcode = 1, 
       ClassName = "NameofOne", 
       EntryClassId=1 
      }, 
      new EntryClass 
      { 
       Classcode = 2, 
       ClassName = "NameofRTwo", 
       EntryClassId =2 
      }, 
      new EntryClass 
      { 
       Classcode = 3, 
       ClassName = "NameofRThree", 
       EntryClassId = 3 
      }, 
      new EntryClass 
      { 
       Classcode = 4, 
       ClassName = "NameofFour", 
       EntryClassId = 4 
      }, 
     }; 
     ViewBag.FillForDropDown = ec.Select(x => new SelectListItem() 
     { 
      Text = x.ClassName, 
      Value = x.EntryClassId.ToString() 

     }); 
    return View(); 

ポストは、コントローラのエントリを作成するのEntryID = 0、EVENTNAME = "正しい" を返し、EntryClassesは= 0を数えます。

​​

Create.cshtml

form asp-action="Create"> 
<div class="form-horizontal"> 
    <h4>Entry</h4> 
    <hr /> 
    <div asp-validation-summary="ModelOnly" class="text-danger"></div> 
    <div class="form-group"> 
     <label asp-for="EventName" class="col-md-2 control-label"></label> 
     <div class="col-md-10"> 
      <input asp-for="EventName" class="form-control" /> 
      <span asp-validation-for="EventName" class="text-danger"></span> 
     </div> 
    </div> 

    <div asp-validation-summary="ModelOnly" class="text-danger"></div> 

    <div class="form-group"> 
     <label asp-for="EntryClasses" class="col-md-2 control-label></label> 

     <select class="col-md-10" 
     id="EntryClassID" asp-for="EntryClasses"asp-items="@ViewBag.FillForDropDown" 
       name="EntryClasses" selected="selected" multiple="multiple"> 
     </select> 

     <span asp-validation-for="EntryClasses" class="text-danger"></span> 

    </div> 



    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" value="Create" class="btn btn-default" /> 
     </div> 
    </div> 
</div> 
</form> 

<div> 
<a asp-action="Index">Back to List</a> 
</div> 

@section Scripts { 
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");} 
} 

答えて

0

どんなに私が選択taghelper、すべての私はと呼ばれるエントリに結合していたオブジェクトに表示されていないリストを設定する方法。 EntryClassesは常にcount = 0です。回避策として、ModelState ValuesサブキーAttepemtedValueでユーザーが選択したアイテムを見つけました。

私はそれらを分割し、結果を使用してレコードのコンテキストを照会しました。

string attemptedvalue = ModelState.Values.Last().AttemptedValue; 
      string[] b = attemptedvalue.Split(','); 

サブキーは、バインドステートメントと同じ順序で表示されます。私はそれが働いている例が見つかるまで、私は壊れて投票します。

関連する問題