다음은 서버 측 C # 열거를 JSON으로 직렬화하고 결과를 사용하여 클라이언트 측을 채우는 간단한 솔루션입니다. <select>
요소 . 이것은 간단한 열거 형과 비트 플래그 열거 형 모두에서 작동합니다.
C # 열거 형을 JSON으로 직렬화하려는 대부분의 사람들이 <select>
드롭 다운 을 채우는 데 사용할 것이라고 생각하기 때문에 엔드 투 엔드 솔루션을 포함 시켰 습니다.
간다 :
열거 형 예제
public enum Role
{
None = Permission.None,
Guest = Permission.Browse,
Reader = Permission.Browse| Permission.Help ,
Manager = Permission.Browse | Permission.Help | Permission.Customise
}
비트 단위 OR을 사용하여 권한 시스템을 생성하는 복잡한 열거 형입니다. 따라서 열거 형의 정수 값에 간단한 인덱스 [0,1,2 ..]를 사용할 수 없습니다.
서버 측-C #
Get["/roles"] = _ =>
{
var type = typeof(Role);
var data = Enum
.GetNames(type)
.Select(name => new
{
Id = (int)Enum.Parse(type, name),
Name = name
})
.ToArray();
return Response.AsJson(data);
};
위의 코드는 NancyFX 프레임 워크를 사용하여 Get 요청을 처리합니다. 낸시를 사용합니다.Response.AsJson()
도우미 메서드를 하지만 열거 형이 이미 직렬화 준비가 된 간단한 익명 유형으로 투영되었으므로 표준 JSON 포맷터를 사용할 수 있습니다.
생성 된 JSON
[
{"Id":0,"Name":"None"},
{"Id":2097155,"Name":"Guest"},
{"Id":2916367,"Name":"Reader"},
{"Id":4186095,"Name":"Manager"}
]
클라이언트 쪽-CoffeeScript
fillSelect=(id, url, selectedValue=0)->
$select = $ id
$option = (item)-> $ "<option/>",
{
value:"#{item.Id}"
html:"#{item.Name}"
selected:"selected" if item.Id is selectedValue
}
$.getJSON(url).done (data)->$option(item).appendTo $select for item in data
$ ->
fillSelect "#role", "/roles", 2916367
HTML 전에
<select id="role" name="role"></select>
HTML 후
<select id="role" name="role">
<option value="0">None</option>
<option value="2097155">Guest</option>
<option value="2916367" selected="selected">Reader</option>
<option value="4186095">Manager</option>
</select>