使用控制器的Post操作更新PartialView

时间:2019-06-10 09:46:12

标签: c# asp.net-mvc .net-core asp.net-mvc-partialview

我们创建了一个索引视图,其中包含一个表单和一个在单独的局部视图中定义的表。运行页面时,表视图从视图模型获取其数据,并使用以下将所需数据传递到部分视图的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”

0 个答案:

没有答案