我正在处理动作结果,它返回JSON数据进行查看,然后通过AJAX调用加载到textFields上
动作:
public ActionResult loadInf(string custm)
{
int smclientbranchid = Convert.ToInt32(Session["smclientbranchid"]);
var query = (from parent in db.Customer
join child in db.CustomerAddress on parent.CustomerId equals child.CustomerId
where parent.SMClientBranchId == smclientbranchid && parent.NIC == custm
select new SalesVM
{
Indicator = parent.Indicator,
//code removed
}).ToList();
return Json(query);
}
在视图中:
@Html.DropDownListFor(model => model.Indicator,
new SelectList(Enum.GetValues(typeof(ColorTypes))),
"<Select>",
new { @class = "form-control", id ="Indicator" })
<script type="text/javascript">
$(document).ready(function () {
$("#btnSearchCus").click(function () {
var custm = $('#custm').val();
$.ajax({
cashe: 'false',
type: "POST",
data: { "custm": custm },
url: '@Url.Action("LoadCustomerInfo", "Sales")',
dataType: 'json', // add this line
"success": function (data) {
if (data != null) {
var vdata = data;
$("#Indicator").val(vdata[0].Indicator);
//code removed
}
}
});
});
});
</script>
我正在获取正确的数据,并且除了“指标”字段(枚举类型)外,还正确加载。
如何从我得到的数据中选择一个枚举列表项。
例如:
0,1,2,3索引顺序
答案 0 :(得分:1)
如果检索字符串变量nm(0,1,2,3 ...) - 最好将类型更改为int,并尝试将整数变量转换为Enum
类型。
public ActionResult loadInf(int nm)
{
ColorTypes enumValue = (ColorTypes) nm;
.......
您可以查看本文的详细信息:http://www.jarloo.com/convert-an-int-or-string-to-an-enum/
答案 1 :(得分:1)
您需要针对选择列表的所有Value
值设置option
属性。
使用以下内容为您的下拉框选择值的文本表示:
@Html.DropDownListFor(model => model.Indicator, Enum.GetValues(typeof(ColorTypes)).Cast<ColorTypes>().Select(x => new SelectListItem { Text = x.ToString(), Value = x.ToString() }), new { @class = "form-control", id = "Indicator" })
或使用以下内容进行选择integer
值:
@Html.DropDownListFor(model => model.Indicator, Enum.GetValues(typeof(ColorTypes)).Cast<ColorTypes>().Select(x => new SelectListItem { Text = x.ToString(), Value = ((int)x).ToString() }), new { @class = "form-control", id = "Indicator" })
这将允许您的.Val()
jQuery代码选择正确的代码。