我有一个MVC枚举列表,我想使用angular方法在下拉列表中绑定。 怎么可能呢?
public enum DefultBookType : byte
{
Not Direct= 0,
Individual = 1
}
public ActionResult Application(){
ViewBag.BT = Enum.GetNames(typeof(DefultBookType)).ToList();
return View();
}
@{
var lstBT= @ViewBag.BT
}
<select ng-model="Btype" ng-options="ctr as ctr.Name for ctr in lstBT track by ctr.Id">
<option value="">select</option>
</select>
答案 0 :(得分:2)
您可以按照以下代码段执行此操作。
替换enum
文件中的action
和controller.cs
:
public enum DefultBookType : byte
{
NotDirect = 0,
Individual = 1
}
public ActionResult Application()
{
ViewData["BT"] = JsonConvert.SerializeObject(Enum.GetValues(typeof(DefultBookType)), Formatting.Indented, new StringEnumConverter());
return View();
}
您的.cshtml
将
<select ng-model="selected" ng-options="key as val for (key, val) in @ViewData["BT"]">
<option value="">select</option>
</select>
下拉显示如屏幕截图所示:
答案 1 :(得分:1)
您可以使用Json.NET将对象集合转换为对象数组,然后需要在m中分配
@{
var lstBT = JsonConvert.SerializeObject(ViewBag.BT);
}
然后你必须将lstBT分配到控制器的模型中才能使用;您不能直接引用lstBT,因为lstBT是服务器端字符串,要作为JSON对象的客户端JavaScript数组呈现给客户端。
我不确定动态对象在序列化中是如何工作的;如果有问题,可以将ViewBag切换到ViewData。