我有一个视图,我想通过更改DropDownList来更改其数据。 一切正常,但View不会使用新的数据集进行渲染。换句话说,当我将数据发布到控制器中的动作方法时,它无法返回视图。 这是我的代码:
查看:
@model IEnumerable<Model.Params>
<table>
@foreach(var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
</tr>
}
</table>
<div>
@(Html.Kendo().DropDownList()
.Name("datetime")
.DataTextField("DateText")
.DataValueField("DateText")
.Events(e => e.Change("datesChange"))
.DataSource(ds => ds.Read("Read_Intervals", "MyController"))
)
</div>
<script>
function datesChange() {
var value = $("#datetime").val();
$.post("@Url.Action("Kq_Read", "MyController")" + "?date=" + value);
}
</script>
控制器:
public ActionResult Kq(string date)
{
IQueryable<Params> kq;
if (date != null)
{
var datetime = Convert.ToDateTime(date);
kq = db.Params.Where(p => p.LogDate == datetime);
}
else
{
var datetime = GetLatestInterval();
kq = db.Params.Where(p => p.LogDate == datetime);
}
return View("Kq", kq);
}
[HttpPost]
public ActionResult Kq_Read(string date)
{
var datetime = Convert.ToDateTime(date);
var kq = db.Params.Where(p => p.LogDate == datetime);
return View("Kq", kq);
}
答案 0 :(得分:1)
您需要使用返回的数据执行执行某些操作。当您提交AJAX请求时,您需要实现一个回调方法,该方法将获取返回的数据并使用它或其他任何内容更新您的UI。这就是你的全部,页面不会自动为你重新渲染。
$.post("@Url.Action("Kq_Read", "MyController")" + "?date=" + value, function (result) {
// do something with `result`
});