このリストで同じ SelectListItems を取得することは可能ですか:
public static List<SelectListItem> GetAreaApprovingAuthorities(int id)
{
List<Employee> approvingAuthorities = new List<Employee>();
using (var db = new TLMS_DBContext())
{
approvingAuthorities = db.Employees.Where(e => e.UserRoleID > 1 && e.PersonnelAreaID == id).ToList();
}
List<SelectListItem> returned = new List<SelectListItem>();
foreach (Employee emp in approvingAuthorities)
{
returned.Add(new SelectListItem { Text = string.Format("{0} {1}", emp.FirstName, emp.LastName), Value = emp.ID.ToString() });
}
return returned;
}
Jsonを使用してそれらを選択リストに渡しますか? リストが取得されるコントローラ アクションは次のとおりです。
public JsonResult GetApprovingAuthorities(int id)
{
return Json(TLMS_DropDownLists.GetAreaApprovingAuthorities(id),JsonRequestBehavior.AllowGet);
}
ここでは、json オブジェクトが繰り返され、選択リストに渡されます (これは、別の選択リストの値が変更されたときにトリガーされます)。
$.ajax({
type: 'GET',
data: { id: selectedValue },
url: '@Url.Action("GetApprovingAuthorities")',
contentType: "application/json; charset=utf-8",
global: false,
async: false,
dataType: "json",
success: function (jsonObj) {
$('#aa').empty();
$.each(jsonObj, function (key, value) {
$('#aa').append($("<option/>", {
value: key.Text,
text: value.Text
}));
});
}
});
これは、「aa」選択リストを設定するために機能しており、コントローラー アクションの FormCollection を介して選択リストの選択されたアイテムを受け取っていますが、「GetAreaApprovingAuthorities」SelectListItem の値から元の ID を取得できません。これを実現する方法はありますか?