【问题标题】:C# values on ASPX page combine on refreshASPX 页面上的 C# 值在刷新时合并
【发布时间】:2014-10-29 05:56:31
【问题描述】:

我正在开发一个网页,该网页会提取用户分数并将该分数计入一个百分比。然后使用该百分比填充 Bootstrap 进度条,使用宽度和 aria-valuenow。

问题是在初始构建和页面刷新后,进度条宽度(也就是分数)会按原始分数增长。例如,如果百分比从 40 开始,它将刷新为 80...120...160...等。

这是我分配值的 C# 代码:

private static string[][] matches = new string[numOfGames][];
private static string[] winningTeams = new string[numOfGames];
protected static string[,] players = { { "Name", "0" }, { "Name", "0" }, { "Name", "0" }, { "Name", "0" }, { "Name", "0" }, { "Name", "0" }, { "Name", "0" }, { "Name", "0" }, { "Name", "0" } };
public static double score_name1, score_name2, score_name3, score_name4, score_name5, score_name6, score_name7, score_name8, score_name9;

protected void Page_Load(object sender, EventArgs e) {
    gatherMatches();

    DataTable userPicks = getGSheetData();
    userPicks.Columns.Remove( "Timestamp" );
    userPicks.Columns.Remove( "Your Name" );

    convertTeamNames();

    compareMatches();

    generateUserScores( userPicks );

    score_name1 = Convert.ToDouble( players[0, 1] ) / numOfGames * 100.00;
    score_name2 = Convert.ToDouble( players[1, 1] ) / numOfGames * 100.00;
    score_name3 = Convert.ToDouble( players[2, 1] ) / numOfGames * 100.00;
    score_name4 = Convert.ToDouble( players[3, 1] ) / numOfGames * 100.00;
    score_name5 = Convert.ToDouble( players[4, 1] ) / numOfGames * 100.00;
    score_name6 = Convert.ToDouble( players[5, 1] ) / numOfGames * 100.00;
    score_name7 = Convert.ToDouble( players[6, 1] ) / numOfGames * 100.00;
    score_name8 = Convert.ToDouble( players[7, 1] ) / numOfGames * 100.00;
    score_name9 = Convert.ToDouble( players[8, 1] ) / numOfGames * 100.00;

    name2.Attributes.Add( "style", "width: " + score_name2.ToString() + "%" );
    name2.Attributes.Add( "aria-valuenow", players[0, 1].ToString() );
}

为了举例,替换了实际的名称值。

在 ASPX 页面中:

<%@ Page Title="Scoreboard" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Scoreboard.aspx.cs" Inherits="Football.Scoreboard" %>

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<div class="page-header">
    <h2><%: Title %></h2>
    <h3>See up to date standings.</h3>
</div>
<p>This page can be refreshed during game time to see changes in leaders as they happen.</p>
<div class="row">
    <div class="col-md-6">
        <h3>This Week</h3>
        <div class="progress">
            <div id="name1" class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="5" aria-valuemin="0" aria-valuemax="16" style="width: 0%">
                Name
            </div>
        </div>
        <div class="progress">
            <div id="name2" runat="server" class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="16">
                Name
            </div>
        </div>
        <div class="progress">
            <div id="name3" class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="4" aria-valuemin="0" aria-valuemax="16" style="width: 0%">
                Name
            </div>
        </div>
        <div class="progress">
            <div id="name4" class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="3" aria-valuemin="0" aria-valuemax="16" style="width: 0%">
                Jen
            </div>
        </div>
        <div class="progress">
            <div id="name5" class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="1" aria-valuemin="0" aria-valuemax="16" style="width: 0%">
                Name
            </div>
        </div>
        <div class="progress">
            <div id="name6" class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="16" style="width: 0%">
                Name
            </div>
        </div>
        <div class="progress">
            <div id="name7" class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="16" style="width: 0%">
                Ryan
            </div>
        </div>
        <div class="progress">
            <div id="name8" class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="16" style="width: 0%">
                Name
            </div>
        </div>
        <div class="progress">
            <div id="name9" class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="16" style="width: 0%">
                Name
            </div>
        </div>
    </div>

我只将动作应用到第二个进度条,因为其他的目前没有数据。

【问题讨论】:

  • 提供更多与页面相关的代码...这里没有足够的信息来推断问题。
  • 你的意思是更多来自aspx页面还是cs页面?

标签: javascript c# css asp.net


【解决方案1】:

我在您的问题中推断了很多,但请在您的代码中考虑这两个因素。

1在您的 Page_Laod 代码中,您可能必须使用 Page 函数 IsPostBack() 如果(!IsPostBack) { // 做你只在第一次加载时做的工作 //设置进度为0,初始化变量为0 } 别的 { // 仅添加或执行此页面加载数学 }

2现在还要消除你的静态数学和页面变量。

还有: 您的第二个进度条在其 html 中没有将百分比设置为 0。

在首次加载和失败时查看渲染的 html 源代码。这将为您提供有关问题所在的线索。

编辑:

静态变量 - 我想看看您是否正在从您的一个静态变量中读取值。尽量不要使用您创建的静态变量。尝试从 getGSheetdata() 获取所有当前数据。 另一种说法是,您不应该在 Page_Load 函数上方声明任何变量。所有值都应该从每个页面开始,例如 0。(在这种特定情况下)您的下一步应该是在数据更改点上放置一个断点,并观察每个页面的值会发生什么变化您的代码的步骤。

【讨论】:

  • 我尝试使用 IsPostBack 方法,但是它没有检测到使用浏览器的刷新按钮,只有一个我手动添加到页面的刷新按钮。您到底指的是什么静态数学?
  • 另外,这里是之前的来源:&lt;div class="progress"&gt; &lt;div id="MainContent_reese" class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="6" aria-valuemin="0" aria-valuemax="16" style="width: 40%"&gt; Reese &lt;/div&gt; &lt;/div&gt; 和之后的来源:&lt;div class="progress"&gt; &lt;div id="MainContent_reese" class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="12" aria-valuemin="0" aria-valuemax="16" style="width: 80%"&gt; Reese &lt;/div&gt; &lt;/div&gt;
【解决方案2】:

好吧,我确实找到了解决方案。出于某种原因,二维数组的值在每次刷新时都保持不变,所以当我调用gatherUserScores(userPicks);它会将当前分数添加到旧分数中,从而增加原始分数。

我通过添加以下循环来每次重置数组来解决这个问题:

for ( int i = 0; i < players.Length / 2; i++ )
        {
            players[i, 1] = "0";
        }

我发现值保持不变的原因可以通过检测页面何时刷新并且不再运行代码来预防,但即使找到了一些示例,我也没有运气,所以这种方法效果最好。

感谢你们的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 2011-02-27
    • 2023-04-09
    • 2016-02-26
    • 2016-12-30
    • 2012-08-20
    相关资源
    最近更新 更多