【发布时间】:2015-04-16 07:39:19
【问题描述】:
我正在处理返回 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 索引顺序
【问题讨论】:
-
您的 ajax 在
SalesController上调用LoadCustomerInfo()并传递一个名为custm的参数,但您显示的方法是loadInf(string nm)。您似乎没有包含正确的方法。 -
是的,它确实有匹配的顺序是什么意思?
vdata[0].Indicator输出什么?它是否与您的选项之一的value属性完全匹配? -
"What does vdata[0].Indicator output"有什么不明白的地方?在您的代码中放入
console.log( vdata[0].Indicator);并检查该值是什么并将其与为select中的选项生成的html 进行比较)并阅读我的第二条评论-您显示了错误的代码(您调用了一个名为@987654332 的方法@不是loadInf()) -
我同意我们确实需要知道
vdata[0].Indicator是枚举的字符串表示还是整数值。无论哪种方式,请查看我发布的新答案。您的 jquery 未选择正确的值,因为您的选项上的value=""属性未填充。
标签: ajax asp.net-mvc enums