我是ASP.NET MVC和jQuery的新手。我有一个jQuery UI datepicker,允许用户选择日期。在选择时,我有代码将日期参数发送到我的索引控制器操作,然后应该更新视图。但是,页面未更新。最终,我只想更新数据绑定的表而不是页面的其余部分。最好的方法是什么?
这是我的jQuery函数:
$(function () {
$("#datepicker").datepicker({
onSelect: function (dateSelected) {
$.post('<%= Url.Action("Index") %>',
{ date: dateSelected },
handleSuccess
);
}
});
});
控制器是这样的:
public ActionResult Index(string date)
{
// ...
Data = GetData();
return View(Data);
}
在我使用OnSelect方法之前,我只是使用一个按钮来提交它。它工作得很好然后按下按钮,数据将被返回,视图将更新。但是当我以这种新方式调用它时,我看到传入了正确的参数,并且返回了正确的数据,但视图没有改变。
答案 0 :(得分:1)
您的jQuery调用异步提交控制器操作。这意味着您负责更新页面。这可以在handleSuccess函数中完成。
最简单的方法是在成功处理程序中执行此操作。由于您的操作会返回html,因此您可以使用新内容替换表格的当前内容。
function handleSuccess(data) {
$('#dataTable').html($(data).find('#dataTable').html())
}
我认为更好的解决方案是根据传递给操作的一些标志动态返回ViewResult或JsonResult。然后,您可以使用jQuery Templates来呈现结果。