我在控制器中定义了一个列表。现在我想获得用户输入,检查它是否存在于控制器的列表中,然后获取所有相关值。
控制器
private List<M> Ma()
{
List<M> md = new List<M>()
{
new M{ R="a", A=300, T= 1, P=40, N=1200},
new M{ R="Bl", A=100, T= 150, P=400, N=1200},
};
return mapData;
}
答案 0 :(得分:1)
您的控制器应如下所示:
public ActionResult DashData(double a)
{
return Json(md.FirstOrDefault(map=>map.a == a));
}
虽然md是您首先定义的列表
那么你的AJAX调用应该是这样的:
$.ajax({
url: "../Home/DashData",
type: "POST",
data: {'a':a},
success: function (data) {
qv.val(data.a);
}
});
答案 1 :(得分:1)
首先,将ajax调用更改为
var a = $('input').val();
var qv = $('.act');
var tv = $('.tot'); // you don't seem to use this
$.ajax({
url: '@Url.Action("DashData", "Home")', // never hard code the url!
type: "POST",
data: { a: a }, // change this
success: function (data) {
// access the properties of the object
var A = data.A; // returns 300
var T = data.T; // returns 1
var P = data.P; // returns 40
var N = data.N; // returns 200
}
});
附注:
var a = $('input').val();
将始终返回值
视图中的第一个<input>
,因此建议您使用id
属性
($('#myInput').val();
)$.post('Url.Action("DashData", "Home"),
{a: a }, function(data) { ... })
接下来修改控制器方法以接受传递的参数并返回匹配的Map
对象
public ActionResult DashData(string a)
{
// Get the first matching MapModel
MapModel map = MapData().FirstOrDefault(m => m.R == a);
return Json(map);
}