默认情况下,我正在部分视图中加载所有数据
Index.cshtml中的html代码
@model GMWUI.ViewModel.MessageDisplayModel
<div id="divTblMsg" class="grid-content">
@{
Html.RenderPartial("filterMessages", Model);
}
</div>
HomeController.cs
public async Task<IActionResult> Index()
{
messageDisplayModel.Messages = await ApiClientFactory.Instance.GetMessages();
return View(messageDisplayModel);
}
当用户单击带有搜索条件的过滤器按钮时 我正在将来自Web api的过滤数据发送到我的家庭控制器filtermessage方法
当我单击过滤器按钮时,这是我的ajax调用
$.ajax({
method: 'post',
url: "Home/postMessage",
data: JSON.stringify(model),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
//my table element id is divTblMsg
$("#divTblMsg").html(data);
}
});
HomeController.cs
[HttpGet]
public async Task<IActionResult> filterMessages(GetMessageParams searchCriteria)
{
//I though adding below line will clear old data should update partial view with filtered data, but it is not working.
messageDisplayModel.Messages = Enumerable.Empty<Messages>();
messageDisplayModel.Messages = await ApiClientFactory.Instance.GetMessages(searchCriteria);
//I am getting filtered data to messageDisplayModel.messages and I am passing it to partial view
return PartialView("filterMessages", messageDisplayModel.Messages);
}
我找不到问题
答案 0 :(得分:2)
是偶然的,因为您的AJAX方法是post
的{{1}}而不是Home/postMessage
的{{1}},而您使用的标记是get
过滤器?
答案 1 :(得分:1)
尝试更改URL路径以使其与控制器操作名称完全匹配,并且方法类型等于对该操作设置的属性:
$.ajax({
method: 'GET', // or type: 'GET'
url: '@Url.Action("filterMessages", "Home")',
data: JSON.stringify({ searchCriteria: model }), // here you should include action parameter name
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
$("#divTblMsg").html(data);
}
});
如果要使用POST
方法,只需将[HttpGet]
替换为[HttpPost]
并遵循上面所示的URL约定。
还要注意,您应该确保传递的model
包含对象(定义为var model = {};
的对象),然后为model
属性分配值。
答案 2 :(得分:1)
我通过如下更新ajax调用解决了该问题。
$.ajax({
method: 'GET',
url: '@Url.Action("filterMessages", "Home")',
async: true,
cache: false,
data: model,
dataType: 'HTML',
success: function (data) {
$("#divTblMsg").html(data);
}
});
我已将获取方法更新为我将动作结果使用获取属性,并将 url 和 dataType更新为HTML,因为我们将获得响应是HTML 。