首页 > 解决方案 > PartialView 未使用新数据进行更新

问题描述

默认情况下,我在局部视图中加载所有数据

Index.cshtml 中的 html 代码

@model GMWUI.ViewModel.MessageDisplayModel

<div id="divTblMsg" class="grid-content">
    @{
        Html.RenderPartial("filterMessages", Model);
    }
</div>

家庭控制器.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);
            }
        });

家庭控制器.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);
        }

我找不到问题

标签: asp.netasp.net-mvcasp.net-core-mvc

解决方案


是不是偶然的,因为您的 AJAX 方法是使用过滤器标记的postHome/postMessage而不是使用过滤器标记的?getfilterMessages[HttpGet]


推荐阅读