c# - Modal的部分 View 内容不刷新

标签 c# asp.net-mvc twitter-bootstrap bootstrap-modal

我有一个 Bootstrap 模式,当打开时,它会访问服务器以使用将显示在屏幕上的数据更新模型。第一次打开模式时效果很好,但之后,它总是显示与第一次打开时相同的数据。

在 View 中:

<div id="ChangeOrderModal" class="modal hide fade" style="width:1000px">
<div class="modal-body">
    <div id="ChangeOrderTable"></div>
</div>
<div class="modal-footer">
    <a href="#" data-dismiss="modal" class="btn">Close</a>
</div>

View 中的脚本来访问服务器并更新数据:

var url = '@Url.Action("SetChangeOrderDate")';
$.post(url, { coDate: date, projId: @Model.Project.id_project }, function (data) {
    $('#ChangeOrderTable').replaceWith(data);
});
$('#ChangeOrderModal').modal('show');

每次都很好地完成 Action :

[HttpPost]
public ActionResult SetChangeOrderDate(string coDate, int projId)
{
    ....
    return PartialView("_ChangeOrderTable", projectVM);
}

然后,在局部 View 中:

@foreach (var record in Model.ChangeOrder.Change_Order_Dash_List
{
     ... create table based on the list...
}

如果我在部分 View 中的 @foreach 上放置一个断点,并获取项目的计数,它总是正确的。示例:第一次打开模态框时,其计数为 3。然后,屏幕上呈现三行。我关闭了模式,通过单击另一个图标将其打开,这次计数为 7。我什至可以看到它在 HTML 上循环以渲染每行七次。

但是,屏幕上出现了与上次相同的三行。

我做错了什么?

最佳答案

您使用.replaceWith()意味着在第一个事件中,您替换 <div id="ChangeOrderTable"></div>元素与您的部分生成的 html 和 <div>元素不再存在。

在第二个事件中,您返回了正确的 html,但是 $('#ChangeOrderTable').replaceWith(data);不再执行,因为没有 id="ChangeOrderTable" 的元素(因此您只能看到第一个事件中呈现的元素)。

将更新到 DOM 的代码更改为使用 .html()它替换元素的内容,而不是元素本身。

$.post(url, { coDate: date, projId: @Model.Project.id_project }, function (data) {
    $('#ChangeOrderTable').html(data);
});

欲了解更多信息,请参阅What's the difference between jQuery's replaceWith() and html()?

关于c# - Modal的部分 View 内容不刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40474955/

相关文章:

javascript - 将输入绑定(bind)到按钮单击函数的值

c# - 如何仅在 wpf 列表框的一行上更改前景色?

c# - 保存到文本文件时对 BlockingCollection<IComparable> 进行排序

c# - C# 中的前缀和后缀运算符重载

c# - Windows Azure 上的作业队列设计

asp.net - MVC 自定义角色提供程序重定向到登录页面

c# - 基于razor变量在 View 中添加元素属性

asp.net-mvc - 一种在 ASP.NET MVC 中排除操作过滤器的方法?

javascript - Jquery datepicker 被输入重叠

html - 褪色垂直线