gpt4 book ai didi

javascript - 带有 Ajax 按钮的 Asp.net MVC 从数据库中检索数据

转载 作者:行者123 更新时间:2023-11-30 19:42:30 28 4
gpt4 key购买 nike

我有一个 Ajax 按钮,每当我单击它时,它都会显示数据库中的一条记录(在我的 Controller 中,我使用了 .Take(1) )
这是我的观点:

   <script src="~/Scripts/jquery-3.1.1.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>

<script type="text/javascript" language="javascript">
function ClearResults() {
$("#current").empty();
}
</script>
<div class="row">
<div class="column">
<h2 class="header-text">CURRENT</h2>
<div class="current" id="current">
X000
</div>
</div>
</div>

<div class="row">
@Ajax.ActionLink(" ", "BtnNext", null, new AjaxOptions
{
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "current",
LoadingElementId = "loading",
OnBegin = "ClearResults",
}, new { @class = "Middle-next dim btn btn-large-dim", @id = "Link1"})
</div>

这是我的按钮 Controller :

    public PartialViewResult BtnNext(int count = 0)
{
System.Threading.Thread.Sleep(1000);
var model = db.Queues.OrderBy(x => x.QueueNumber).Take(1);
return PartialView("_queuenumber", model);
}

我想在这里做的是——每当我点击下一步按钮时,它会显示数据库中的第一条记录,然后当我再次点击它时,它会显示第二条记录,依此类推。
(截至目前它只显示来自数据库的第一条数据)

我想知道这是否可能,我应该使用什么样的东西来做到这一点?

最佳答案

您将要在客户端 (JavaScript) 或模型 (Razor) 中跟踪当前索引,然后将其传递到您的 Controller 方法中,并在每次调用时递增该值。从服务器端你会做这样的事情:

var model = db.Queues.OrderBy(x => x.QueueNumber).Skip(index).Take(1);

我建议发回 ViewModel。对于 Razor 实现,您可以拥有一个包含显示值、队列 ID 和索引的 ViewModel。即

public class QueueViewModel
{
public int QueueId { get; set; }
public int QueueNumber { get; set; }
public string Name { get; set; }
// ..
public int NextIndex { get; set; }
}

public PartialViewResult BtnNext(int index = 0)
{
var model = db.Queues.OrderBy(x => x.QueueNumber)
.Select(x => new QueueViewModel
{
QueueId = x.QueueId,
QueueNumber = x.QueueNumber,
Name = x.Name,
NextIndex = index + 1
})
.Skip(index).Take(1);
return PartialView("_queuenumber", model);
}

然后在 View 中将如下所示:(抱歉,我的 Razor 已经生锈了)

    @Ajax.ActionLink(" ", "BtnNext", "QueueController", 
new { index = Model.nextIndex },
new AjaxOptions
{
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "current",
LoadingElementId = "loading",
OnBegin = "ClearResults",
}, new { @class = "Middle-next dim btn btn-large-dim", @id = "Link1"})

这需要对行为进行一些验证,以确保第一次调用通过索引值“0”,但应该会给您一些想法以供追求。

关于javascript - 带有 Ajax 按钮的 Asp.net MVC 从数据库中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55253289/

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