EditorForModel()을 사용할 때 DropDownLists로 표시되도록 사용중인 일부 Enum에 대해 여러 EditorTemplates를 만들었습니다. 그러나 목록에서 항목을 선택한 후 양식을 제출하면 항상 첫 번째 항목이 선택한 항목 대신 드롭 다운에 제출됩니다. 내가 가지고있는 경우열거 형 DropDownList는 항상 목록의 첫 번째 값을 반환합니다.
예를 들어, 열거는 "크기"라고하며 값 '작은', '중간' 및 '대형'을 가지고있다. EditorForModel은 'Small', '중간', '큰' 순서대로 표시하는 드롭 다운을 만듭니다. 'Large'을 선택한 다음 데이터베이스에 입력 된 모델 항목의 세부 정보를 확인하면 'Small'이 잘못 표시됩니다.
Sizes.cshtml (편집자 템플릿)
@model Options.Sizes
@{
var values = Enum.GetValues(typeof(Options.Sizes)).Cast<Options.Sizes>();
IEnumerable<SelectListItem> items =
from value in values
select new SelectListItem
{
Text = value.ToString(),
Value = value.ToString(),
Selected = (value.Equals(Options.Sizes.Small))
};
}
@Html.DropDownList("Size", items)
Options.cs (클래스 열거를 보유)
public class Options
{
public enum Sizes
{
Small,
Medium,
Large
};
}
: 여기
내가 가지고있는 몇 가지 예제 코드입니다
Create.cshtml (보기)
@model = ProjectName.Models.Ball
<form asp-action="Create" asp-controller="Ball">
@Html.EditorForModel()
<input type="submit" value="submit">
</form>
Ball.cs (모델)
public class Ball
{
[Key]
public Nullable<int> ID { get; set; }
public string Name { get; set; }
public Options.Sizes Size { get; set; }
}
은 어떻게 든 볼의 크기 속성은 항상 '작은'입니다 드롭 다운에서 첫 번째 값입니다. 내가 무엇을 선택하든. value.toString에서로 .toString()을 (제거
선택한 값을 설정하고 제출하지 않으면 어떻게됩니까? –
여전히 열거 형에 선언 된 순서대로 실제로 드롭 다운의 첫 번째 값을 사용합니다. –
@ Html.EditorForModel()을 @Html.DropDownListFor로 바꾸고 시도 할 수 있습니다. –