【问题标题】:Change Variable Value with Asp.Net Button Click event使用 Asp.Net 按钮单击事件更改变量值
【发布时间】:2015-10-01 16:46:33
【问题描述】:

我是 ASP.net 的初学者。我最近使用以下代码创建了一些 Web 表单应用程序:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MainForm.aspx.cs" Inherits="TestAssignVariable.MainForm" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">

        <div>
            <asp:Button ID="Button1" runat="server" Text="CHECK" OnClick="Check_Data" />
            <asp:Label ID="ketCekData" runat="server" Text="Label"></asp:Label>
        </div>

        <div>
            <asp:Button ID="Button2" runat="server" Text="ASSIGN" OnClick="Assign_Data"  />
            <asp:Label ID="labelProcess" runat="server" Text="Label"></asp:Label>
        </div>

    </form>
</body>
</html>

以及后面的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace TestAssignVariable
{
    public partial class MainForm : System.Web.UI.Page
    {

        private string file_path = "startx";

        int a = 12; 


        private string FilePath
        {
            get
            {
                return file_path; 
            }
            set
            {
                file_path = value; 
            }
        }


        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Check_Data(object sender, EventArgs e)
        {
            ketCekData.Text = a.ToString()  ; 
        }

        protected void Assign_Data(object sender, EventArgs e)
        {
            // FilePath = "AWESOME"; 
            a = 100; 
            labelProcess.Text = "Data Assigned"; 
        }

    }
}

所以有两个 ID 为 Button1Button2 的按钮。当点击Button2 时,它会触发一个事件,将变量a 的值从12 更改为100Button1 然后在标签ketChekData 上显示变量a 的值。因此,当我单击Button2 后跟Button1 时,标签ketCekData 中必须显示100。但我不明白为什么这不起作用:标签ketCekData 上仍然显示12

【问题讨论】:

  • 您在全局级别分配 a 值,因此每个 postback 值都将重置为 12
  • int a 为静态。请阅读一些与页面生命周期相关的博客。每次回发时分配给int a 的值都会丢失。使用 static 保留更改,但仅在应用程序级别执行此操作。
  • 那我必须做什么?你能给我一些即时文章来解释吗?我的电脑上有一本关于 asp.net 的书,有 900 页。我无法浏览每一页来找到解释。
  • 您希望该值(即 12)用于另一个 page
  • @Suprabhat - 您应该避免在 asp.net 应用程序中使用 static 变量。

标签: asp.net


【解决方案1】:

a 的值是在 page_load 之外声明的。因此,每个回发值都在重置。所以在Aspx中创建一个隐藏字段

Aspx

<asp:HiddenField ID="hdna" value="12" runat="server" />

Cs

删除int a=12;

 protected void Check_Data(object sender, EventArgs e)
        {
            ketCekData.Text = hdna.value  ; 
        }

【讨论】:

  • @Mohammad Fajar 而不是a 现在请使用hdna.value
【解决方案2】:

在这里看看我的 dotnetfiddle:https://dotnetfiddle.net/L8lUSY

HTML

@model HelloWorldMvcApp.ViewModelExample
@{
    Layout = null;
}

<!DOCTYPE html>
<!-- template from http://getbootstrap.com/getting-started -->

<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Bootstrap 101 Template</title>

        <!-- CSS Includes -->
        <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">

        <style type="text/css">

            .field-validation-error {
                color: #ff0000;
            }

        </style>
    </head>

    <body>
        <div class="container">
            <div class="col-md-6 col-md-offset-3">
                <h1>Create item</h1>
                <div class="form-group parentId">
                    @Html.LabelFor(m => m.ParentId)
                    @Html.TextBoxFor(m => m.ParentId)
                </div>
                <button class="button1">Button 1</button>
            <button class="button2">Button 2</button>
            </div>
        </div>

        <!-- JS includes -->
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
        <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>

        <script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js"></script>
        <script src="//ajax.aspnetcdn.com/ajax/mvc/4.0/jquery.validate.unobtrusive.min.js"></script>

        <script type="text/javascript">


            $(function(){
                $('.parentId').hide();

                $('.button1').on('click', function()
                {
                    $('.parentId').toggle();
                });

                $('.button2').on('click', function()
                                 {
                                    $('#ParentId').val('100'); 
                                 });
            });

        </script>
    </body>
</html>

使用 javascript / jQuery 更改值可能对您来说更容易

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 2016-06-07
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 2021-05-20
    相关资源
    最近更新 更多