0

我需要这方面的帮助..

我有一个包含客户端列表的视图数据,并在调用 Index 操作方法时提供它。

/* 索引动作是打开视图的方法。*/

一旦调用了 Index 方法,就会输入变量并显示视图。

然后,我有一个对话框,其中呈现一个部分视图,其中有一个包含客户列表的表格。

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

/* popupClients 是对话框。*/

/* ClientsPartialView 是一个部分视图,其中包含一个显示客户端 ID 和名称的表。*/

问题是如何在显示之前刷新 viewdata 的数据?

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

谢谢!

4

1 回答 1

0

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

例如,如果您的局部视图呈现div包含弹出窗口的所有内容的 a,您可以使用 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....*/ ;
        }
    });
};

更新

根据您的评论...

每次您的服务器端代码运行(并且您刚刚在评论中向我展示了服务器端代码)时,您都可以获取新数据。当您的局部视图回调您的控制器时,如果这是业务需求,您的控制器应该从数据库中更新模型。

类似于以下内容:

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

    return PartialView(clientList);
}

这将导致每次调用控制器时对数据库进行检查。如果错过最近的更新是可以接受的,您可以更改OutputCache的值以通知 MVC 引擎将结果缓存给定的秒数。您还可以将 OutputCache 配置为基于SQL 依赖项进行刷新,以便在基础表发生更改时自动失效,而不仅仅是基于经过的时间进行刷新。设置起来更复杂,但会给出更准确的结果。

于 2012-04-11T16:42:36.870 回答