gpt4 book ai didi

javascript - 在 MVC 5 中刷新局部 View Div

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:02:22 25 4
gpt4 key购买 nike

我正在尝试刷新 MVC 5 中的部分 View div,以便表格将显示新的 SQL 数据。但是,我遇到了一个问题。现在的情况是,当我在页面加载后向我的 SQL 表中添加任何新数据时,div 不会刷新以包含新数据...只是页面加载时表中的数据。

这是我的 Controller :

    public ActionResult Index()
{

List<List<object>> result = DataAccess.DataAccess.Read(Build.StringArray("Notifications"));

Notifications Notify = new Notifications();
Notify.Update = new List<Notification>();

foreach (List<object> row in result)
{
Notification x = new Notification();
x.notificationMessage = (string)row[1];
x.ID = (int)row[0];
x.TimeStamp = (DateTime)row[2];
Notify.Update.Insert(0,x);
}


return View("Index",Notify);

}

这是我的局部 View :

@model inConcert.Models.Notifications

<table class="table">
<tr>

<th>
<h3>Update</h3>
</th>
<th>
<h3>TimeStamp</h3>
</th>

</tr>


@foreach (var item in Model.Update)
{
<tr>
<td>
@item.notificationMessage
</td>

<td>
@item.TimeStamp
</td>

</tr>
}

</table>

索引 View :

@model inConcert.Models.Notifications

<head>
<title></title>
<link href="@Url.Content("~/Content/Notifications.css")" rel="stylesheet" type="text/css" />

</head>



<div id="notificationsTable">
@Html.Partial("~/Views/Shared/NotificationPartial.cshtml")
</div>


<script type="text/javascript" src="~/Scripts/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
setInterval(function () {
$("#notificationsTable").load("~/Views/Shared/NotificationPartial.cshtml");
}, 2000);
});

还有我的模型:

public class Notification
{
[Key]
public int ID { get; set; }

public string notificationMessage { get; set; }

public DateTime TimeStamp { get; set; }
}
public class Notifications : DbContext
{
public List<Notification> Update { get; set; }
}

最佳答案

您的 .load() 函数正在尝试调用静态文件,该文件默认会抛出 403(禁止)错误并且不会更新任何数据(我强烈建议您学习使用浏览器工具)

您需要创建一个 Controller 方法来生成模型并返回数据的部分 View 。例如

public ActionResult Fetch()
{
Notifications model = new Notifications();
.... // populate your model from the repository
return PartialView("_Notifications", model);
}

_Notifications.cshtml

@model inConcert.Models.Notification
@foreach (var item in Model.Update)
{
<tr>
<td>@item.notificationMessage</td>
<td>@item.TimeStamp</td>
</tr>
}

在主视图中,要初始加载它,您可以使用

@{Html.RenderAction("Fetch");}

这意味着您不必在 Index() 方法中创建和传递模型

然后在脚本中

var url = '@Url.Action("Fetch")';
var notifications = $("#notificationsTable"); // cache it to avoid repeatedly searching the DOM
setInterval(function () {
notifications.load(url);
}, 2000);

旁注:除非您希望数据每 2 秒不断变化,否则这种方法可能效率很低。作为替代,您应该考虑使用 SignalR因此,您的服务器端代码会将内容实时推送到连接的客户端。另请参阅 this tutorial .

关于javascript - 在 MVC 5 中刷新局部 View Div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31082741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com