[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>
답변
GenderType
Enum 유형이 아니라 속성 이름입니다. 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" })