[c#] ASP.NET MVC Core의 드롭 다운 목록에 열거 형 사용
Razor보기에서 태그 도우미를 사용하여 ASP.NET MVC Core에서 열거 형 속성이있는 드롭 다운 목록을 만들려고합니다.
모델은 다음과 같습니다.
public class PersonalMember : Member
{
    [Required, Display(Name = "First Name")]
    public string FirstName { get; set; }
    [Required, Display(Name = "Last Name")]
    public string LastName { get; set; }
    [EnumDataType(typeof(Gender))]
    public Gender GenderType { get; set; }
}
public enum Gender
{
    Male = 1,
    Female = 2
}
다음은보기에있는 양식의 일부입니다.
<div class="form-group">
    <label asp-for="GenderType" class="col-md-2 control-label"></label>
    <div class="col-md-10">
        <select asp-for="GenderType" asp-items="Html.GetEnumSelectList<GenderType>()">
            <option selected="selected" value="">Please select</option>
        </select>
        <span asp-validation-for="GenderType" class="text-danger" />
    </div>
</div>
제가하는 데 문제는 후에이다 Html.GetEnumSelectList, GenderType인식 쇼까지 오류로되지 않습니다.
누구든지 이것을 해결하는 방법을 알고 있습니까?
답변
GenderType대신 실수로 사용했다고 생각합니다 Gender. 올바른 구문은 다음과 같습니다.
<select asp-for="GenderType" asp-items="Html.GetEnumSelectList<Gender>()">
    <option selected="selected" value="">Please select</option>
</select>
답변
GenderTypeEnum 유형이 아니라 속성 이름입니다. GetEnumSelectList 메서드는 모델의 속성 이름이 아니라 열거 형 유형을 제공 할 것으로 예상합니다.
이 시도:
Html.GetEnumSelectList<Gender>()
답변
Razor 구문을 사용하면됩니다.
@Html.DropDownList("StudentGender",
    Html.GetEnumSelectList<Gender>(),
    "Select Gender",new { @class = "form-control" })
답변
나는 같은 문제가 생겼고 해결책을 찾기 위해 머리를 태웠다!
이 상황을 해결할 수 있으며 다음과 같이 뷰 위에 모델을 인스턴스화 할 수 있습니다.
@using CRM.Model;
@ YourSolution.Model 사용
예, 너무 이상하게 들리지만 나를 믿으십시오. 내 게시물에서 내 답변을 참조하십시오.
답변
아래는 나를 위해 일한 것입니다. 이것은 enum 자체가 모델로 사용중인 클래스의 범위에서 선언 된 클래스이기 때문에 필요하며 그 방법입니다.
<select asp-for="Status" class="form-control" asp-items="@Html.GetEnumSelectList<Cart.CartStatus>()"></select>
참조를 위해 내 모델 (진행중인 작업) 아래
 public class Cart
    {
        public int CartId { get; set; }
        public List<Order> Orders { get; set; }
        [Required]
        public string UserId { get; set; }
        public DateTime DeliveryDate { get; set; }
        public CartStatus Status { get; set; }
        public enum CartStatus
        {
            Open = 1,
            Confirmed = 2,
            Shipped = 3,
            Received = 4
        }
    }
답변
GenderType 대신 Gender to asp-items = “Html.GetEnumSelectList -GenderType- ()”을 사용합니다.
asp-items = “Html.GetEnumSelectList -Gender- ()”와 같은
답변
DropDownList에 선택된 옵션이있을 때 케이스 편집을위한 케이스가 하나 필요합니다.
ASP.NET 5 (MVC 6)에서 열거 형 사용 TagHelper 선택
public enum Gender {
  [Display(Name = "Male")]Male = 1,
  [Display(Name = "Female N")]Female = 2,
  [Display(Name = "Other")]Other = 3
}
** 사례 편집의 경우 :
@Html.DropDownListFor(m => m, Html.GetEnumSelectList(typeof(Gender)))
@Html.DropDownListFor(m => m.Gender, Html.GetEnumSelectList<Gender>()))
@Html.DropDownListFor(m => m.Gender, Html.GetEnumSelectList<Gender>(), "Select", new { @class = "form-control" })
** 일반적인 경우 :
<select asp-for="Gender" asp-items="@Html.GetEnumSelectList<Gender>()">
   <option selected="selected" value="">Please select</option>
</select>
<select asp-for="Gender" asp-items="ViewBag.Genders"></select>
@Html.DropDownList("Gender", Html.GetEnumSelectList<Gender>(), "Select", new { @class = "form-control" })
