我们创建了一个索引视图,其中包含一个表单和一个在单独的局部视图中定义的表。运行页面时,表视图从视图模型获取其数据,并使用以下将所需数据传递到部分视图的razor命令正确呈现:
@await Html.PartialAsync("_TablePartialView", Model.TableData)
当用户使用表格搜索某些条件(例如电话号码或电子邮件)时,搜索查询将通过Post方法传递给我们的控制器。控制器正确获取所需的数据,并使用以下命令将其返回到视图:
[HttpPost]
public IActionResult Index(SearchDto search){
TableData data = getData(search);
return PartialView("_TablePartialView", data);
}
但是,它没有更新索引页面内的部分视图,而是重新加载了整个页面。我怎样才能只更新部分视图中的表?
通过将部分视图包装在div标签中,我已经成功地通过ajax调用成功更新了页面:
<div id="tablePartial">
@await Html.PartialAsync("_TablePartialView", Model.TableData)
</div>
然后使用jQuery来更改div标签,方法是通过javascript调用控制器,然后使用以下方法手动设置div标签: $(“#tablePartial”)。html(data);
但是我觉得这很“棘手”。这真的是解决此问题的正确MVC方法吗?
如果可能的话,我想让表单向我们的控制器提交“发布”请求,然后仅更新“ _TablePartialView”