এখানে একটি সহজ সমাধান যা জেএসএনে একটি সার্ভার-সাইড সি # এনামকে সিরিয়ালযুক্ত করে এবং ক্লায়েন্ট-সাইডকে জনপ্রিয় করতে ফলাফলটি ব্যবহার করে <select>
উপাদানটি তৈরি । এটি সহজ এনাম এবং বিটফ্ল্যাগ এনাম উভয়ের জন্যই কাজ করে।
আমি শেষ-থেকে-শেষের সমাধানটি অন্তর্ভুক্ত করেছি কারণ আমি মনে করি যে JSON এ সি # এনাম সিরিয়াল করতে ইচ্ছুক বেশিরভাগ লোকেরা সম্ভবত এটি একটি <select>
ড্রপ-ডাউন পূরণ করতে ব্যবহার করবে ।
এখানে যায়:
উদাহরণ এনুম
public enum Role
{
None = Permission.None,
Guest = Permission.Browse,
Reader = Permission.Browse| Permission.Help ,
Manager = Permission.Browse | Permission.Help | Permission.Customise
}
একটি জটিল এনুম যা অনুমতি সিস্টেম তৈরি করতে বিটওয়াইস ওআরএস ব্যবহার করে। সুতরাং এনামের পূর্ণসংখ্যার মানটির জন্য আপনি সাধারণ সূচক [0,1,2 ..] উপর নির্ভর করতে পারবেন না।
সার্ভার সাইড - সি #
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);
};
উপরের কোডটি ন্যান্সিএফএক্স ফ্রেমওয়ার্কটি ব্যবহারের অনুরোধটি পরিচালনা করতে ব্যবহার করে। এটি ন্যান্সির Response.AsJson()
সাহায্যকারী পদ্ধতিটি ব্যবহার করে - তবে চিন্তা করবেন না, এনামটি ইতিমধ্যে সিরিয়ালাইজেশনের জন্য প্রস্তুত একটি সাধারণ বেনাম প্রকার হিসাবে প্রজেক্ট করা হয়েছে বলে আপনি কোনও মানক জেএসওএন ফর্ম্যাটর ব্যবহার করতে পারেন।
জেএসএন তৈরি করা হয়েছে
[
{"Id":0,"Name":"None"},
{"Id":2097155,"Name":"Guest"},
{"Id":2916367,"Name":"Reader"},
{"Id":4186095,"Name":"Manager"}
]
ক্লায়েন্ট সাইড - কফিস্ক্রিপ্ট
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
এইচটিএমএল আগে
<select id="role" name="role"></select>
এইচটিএমএল পরে
<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>