在刷新的RenderPartial的ViewData对象(Refresh viewData obje

2019-10-31 15:29发布

我需要这方面的帮助..

我有一个客户列表的可视数据,我给它当Index操作方法被调用。

/ *指数动作是打开视图的方法。 * /

一旦该指数方法被调用,变量和feeded视图显示。

然后,我有一个对话框,在这里是呈现partialView,至极有一个表与客户的名单。

<div id="popupClients" class="popUp" style= "display:none">
    <% Html.RenderPartial("ClientsPartialView", ViewData["clients"]); %>

/ * popupClients是对话框。 * /

/ * ClientsPartialView是与客户展示的标识和名称的表partialView。 * /

该cuestion是我怎么能在显示之前刷新可视数据的数据?

我问这个是因为,如果有人插入一个新的客户,必须显示在partialView

Thnxs!

Answer 1:

您可以使用Ajax的 ,只是之前显示该对话框刷新页面表示popupClients的部分。

如果你的局部视图渲染,也就是说,一个div包含所有弹出的内容,你可以使用Ajax刷新div ,沿着线的东西:

function getCustomerList(searchCriteria) {
    $.ajax({
        url: 'Home/GetClientList',
        type: 'POST',
        async: false,
        data: { searchString: searchCriteria },
        success: function (result) {
            $("#popupClients").html(result);
            $( /*... do whatever you do now to show your dialog....*/ ;
        }
    });
};

UPDATE

基于您的评论......

每当你的服务器端代码运行(和你刚才给我的服务器端代码,您的评论),你是在一个位置,以获得新的数据。 当你的局部视图回调到控制器,控制器应更新从数据库模型如果是这样的业务需求。

沿着线的东西:

[OutputCache(Duration = 0)]
public ActionResult _ClientList()
{
    List<Clients> clientList = GetCurrentClientListsFromDB();

    return PartialView(clientList);
}

这将导致一个检查到数据库的每个控制器被调用时。 如果它是可以接受的错过了最近的更新,你可以改变的值的OutputCache通知MVC引擎缓存结果的几秒钟内给定数。 您还可以配置的OutputCache刷新基于SQL的依赖 ,这样,当有一个变化的基础表,而不是仅仅清爽基于经过时间则自动失效。 这是更复杂的设置,但会得到更准确的结果。



文章来源: Refresh viewData object in renderPartial