gpt4 book ai didi

javascript - Controller 将 ViewBag 模型拆分为具有数据库参数的多个页面正在跳过记录

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

摘要:通过页面限制将服务列表分成多个页面会丢失两个页面之间的记录。无论使用 Razor 进行更改,第二页都从相同的 ID 开始。换句话说,我需要第 2 页才能找到第 1 页的结束位置。这可能是一个基本的 ASP.net 问题。 Controller 正在错误地分解 View 。

我继承了一个项目,但无法找到为 View 设置参数的位置。我无法确定是哪个元素导致了问题,并且需要关于在包含的内容之外具体包含哪些代码的指导。在收到评论后,我将使用代码或其他细节修改问题,以使问题仅在必要时尽可能详细。

更新注意:我在项目中没有名为 Controllers 的文件夹。对数据库的引用位于“bin\work1.dll”中

期望:
有两个壁挂显示器,每个都有一个列出“服务”的内部网页,就像机场航站楼列出航类时间一样。屏幕上的分辨率非常适合 5 项服务。

有一个 SQL 表,其中包含用于定义“WallSortBy”和“ServicesPerPage”数量的参数。

通过将 ServicesPerPage 的值从 6 更改为 5,“WallDisplay1”应显示服务 1-5 和“WallDisplay2”6-10,或者如果总服务少于 10 个,则仅显示 6-[Last Service]。如果超过 10 个,则在“倒计时”达到 60 秒后,页面会以 Wall1[6-10]、Wall2[11-15] 等或类似的方式循环。

问题:
例如,给定 9 个总服务。 (其他总数也是如此)
当 ServicesPerPage 从 6 更改为 5 时:

WallDisplay1 = [1 to 5]
WallDisplay2 = [7 to 9]

缺少服务 6。

将 ServicesPerPage 设置为任何值:
WallDisplay1 = [1 to ANYTHING]
WallDisplay2 = [7 to 9]

仪表板:
仪表板工作正常,对每个“服务”使用与墙壁显示相同的 View 布局
所有 9 条记录都正确显示在那里。

WallDisplay1:
WallDisplay1
WallDisplay2:
WallDisplay2

我在整个项目中搜索了硬编码的 6 和 7,但没有找到。我看不到对按表名存储参数的 SQL 表的任何引用。 (更新:在 bin\work1.dll 中有多个引用)。
web.config 中的连接字符串有数据库,但在整个项目中我找不到表名。 “ServicesPerPage”也不是,SQL 表中该参数的 id 是哈希 id。

我在绑定(bind)模型上阅读的示例没有将多个页面拆分为单独的网页,通常这些示例使用导航器来显示来自单个网页的页面。

ViewBag 按“位置”排序,这意味着服务的位置不要与属性“windows.location”混淆。

有三个 Razor .vbhtml 页面将 ViewBag 与服务列表一起使用:
仪表板.vbhtml,
WallDisplay1.vbhtml,
WallDisplay2.vbhtml

相关仪表板代码:
@ModelType IEnumerable(Of work1.Service)

@code
ViewData("Title") = "Board"

Dim lstServiceStatus As SelectList
lstServiceStatus = New SelectList(ViewBag.lstServiceStatus, "Value", "Text", ViewBag.viewStatus)

Dim SortBy As String = If(HttpContext.Current.Request.QueryString("SortBy") Is Nothing, "Location", _
HttpContext.Current.Request.QueryString("SortBy"))
Dim viewStatus As String = If(HttpContext.Current.Request.QueryString("viewStatus") Is Nothing, "Active", _
HttpContext.Current.Request.QueryString("viewStatus"))

End Code

<div id="divBoard">
<div style="margin: 0px 0px 8px 0px;">
<div style="display:inline-table; margin:0px 0px 4px 0px">
Sort by:
@If ViewBag.sortby = "Date" Then
@Html.ActionLink("Location", "Dashboard", New With {.SortBy = "Location", .viewStatus = viewStatus})
@<span style="font-weight:bold">/ Date</span>
Else
@<span style="font-weight:bold">Location /</span>
@Html.ActionLink("Date", "Dashboard", New With {.SortBy = "Date",.viewStatus=viewStatus})
End If
</div>
<div style="display:inline-table; margin-left:50px;">
Status:
@Html.DropDownList("selStatus", lstServiceStatus, New With {.onchange = "javascript:selectViewStatus(this);"})
</div>
</div>

@For Each item In Model

大部分格式化继续进行,然后结束,保存 ID。从这个页面调用其他窗口,到此结束。
    function saveField(th, SrvId) {
$.post("saveServiceField", {
FieldName: th.id,
Value: th.value,
SrvId: SrvId
}, function (data) { th.value = data; });
}

function selectViewStatus(th) {
if (getquerystring()["SortBy"] != null) {
window.location = "/Roster/Dashboard?SortBy=" + getquerystring()["SortBy"] + "&viewStatus=" + th.value;
}
else {
window.location = "/Roster/Dashboard?viewStatus=" + th.value;
}
}


function getquerystring() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
</script>

WallDisplays 几乎相同。

它们之间的区别在这里:

WallDisplay1:
<div id="divBoard">
<div style="margin: 0px 0px 3px 0px;">
<div style="display: inline-table; margin: 0px 0px 4px 0px">
Sort by:
@If ViewBag.sortby = "Date" Then
@Html.ActionLink("Location", "WallDisplay", New With {.SrvId = Guid.Empty, .SortBy = "Location"})
@<span style="font-weight: bold">/ Date</span>
Else
@<span style="font-weight: bold">Location /</span>
@Html.ActionLink("Date", "WallDisplay", New With {.SrvId = Guid.Empty, .SortBy = "Date"})
End If
<input type="hidden" id="hSortBy" value="@ViewBag.SortBy" />
<input type="hidden" id="hLastSrvId" value="@ViewBag.LastSrvId" />
<input type="hidden" id="hRefreshTime" value="@ViewBag.RefreshTime" />
Page @ViewData("currentpage") of @ViewData("totalpage") - Refresh in <span id="countdown_text" style="font-weight: bold">@ViewData("RefreshTime1")</span> Seconds
<script type="text/javascript">countdown_init(@ViewData("RefreshTime1"))</script>

</div>
</div>
<script type="text/javascript" language="javascript">
function loadWall() {
var str = '/Roster/WallDisplay?SrvId=' + $('#hLastSrvId').attr('value') + '&SortBy=' + $('#hSortBy').attr('value');
var t = setTimeout("window.location = '" + str + "'", $('#hRefreshTime').attr('value'));
}
</script>
@For Each item In Model

WallDisplay2:
  <input type="hidden" id="hSortBy" value="@ViewBag.SortBy" />
<input type="hidden" id="hLastSrvId" value="@ViewBag.LastSrvId" />
<input type="hidden" id="hRefreshTime" value="@ViewBag.RefreshTime" />


<div id="divBoard" >
<div style="margin: 0px 0px 3px 0px;">
<div style="display:inline-table; margin:0px 0px 4px 0px">
Sort by:
@If ViewBag.sortby = "Date" Then
@Html.ActionLink("Location", "WallDisplay", New With {.SrvId = Guid.Empty, .SortBy = "Location"})
@<span style="font-weight:bold">/ Date</span>
Else
@<span style="font-weight:bold">Location /</span>
@Html.ActionLink("Date", "WallDisplay", New With {.SrvId = Guid.Empty, .SortBy = "Date"})
End If
Page @ViewData("currentpage2") of @ViewData("totalpage2") - Refresh in <span id="countdown_text" style="font-weight: bold">@ViewData("RefreshTime2")</span> Seconds
<script type="text/javascript">countdown_init(@ViewData("RefreshTime2"))</script>
</div>
</div>
@If ViewData("requiredSecondScree")=False Then
@<strong>All Services are on the first screen...</strong>
Else
@<script type="text/javascript" language="javascript">
function loadWall() {
var str = '/Roster/WallDisplay2?SrvId=' + $('#hLastSrvId').attr('value') + '&SortBy=' + $('#hSortBy').attr('value');
var t = setTimeout("window.location = '" + str + "'", $('#hRefreshTime').attr('value'));
}
</script>
For Each item In Model

更新说明:所有对 LastSrvId 的引用都显示在已发布的代码中。

这是脚本。

Javascript

我将根据要求使用更多相关信息或代码快速更新此问题。

更新:为大量代码道歉:

JScript1.js 我可以在上面尚未显示的“loadWall”项目中找到的唯一实例。
var wall1Object = null;

var screenRefresher = {
wallObject: null,

setWall1Object: function (obj) {
this.wallObject = obj;
alert(this.wallObject);
wall1Object = obj;
},

getWall: function () {
alert(wall1Object);
},

reloadWall1Object: function () {
console.log(wall1Object);
if (this.wallObject != null) {
this.wallObject.location.reload();
return true;
}
}
};
var setWall1Object = function (obj) {
wall1Object = obj;
alert(wall1Object);
};
var reloadWall1Object = function () {
// wall1Object.location.reload();
alert(wall1Object);
};

最佳答案

长时间阅读您的问题后,我认为这是您的问题的原因,如果您可以在项目中找到此问题,您将看到 Controller 代码以及如何根据此值拆分页面的逻辑。

@ViewBag.LastSrvId

查找 ViewBag.LastSrvId在您的项目中,您将进入 Controller 代码,在那里您可以看到逻辑设置页码。 I have seen your code and i can see that page is refreshed based on this viewbag value passed as query string to controller "Roster/WallDisplay2" and in this controller there would be all logic of how your pages will be shown .

更新

您的 Controller 文件夹不在项目中,它可能单独编写并作为 dll 文件包含在项目中,这就是您无法找到 Controller 代码和 Controller 文件夹的原因。

关于javascript - Controller 将 ViewBag 模型拆分为具有数据库参数的多个页面正在跳过记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27619632/

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