[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 사용

예, 너무 이상하게 들리지만 나를 믿으십시오. 내 게시물에서 내 답변을 참조하십시오.

ASP.NET Core MVC에서 ENUM 태그 도우미 선택


답변

아래는 나를 위해 일한 것입니다. 이것은 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" })