每次按下按钮时交换值

时间:2017-08-16 08:35:13

标签: c# asp.net

我想创建一个简单的按钮,它会在每次点击时交换字符串值。这是我的aspx和aspx.cs文件。 ASPX:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master"   AutoEventWireup="true" CodeFile="switch.aspx.cs" Inherits="_Default" %>

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
     <div class="col-md-offset-2 col-md-10">
         <asp:Button runat="server" OnClick="Switch" Text="Switch" CssClass="btn btn-default" />
     </div>
     Translator From :<asp:Label runat="server" ID="testing"></asp:Label> 
     Translator To :<asp:Label runat="server" ID="testing1"></asp:Label> 
</asp:Content>

aspx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.Net;
using System.IO;
using System.Runtime.Serialization;

public partial class _Default : Page
{
    public void SwapStrings(ref string s1, ref string s2)
    // The string parameter is passed by reference.
    // Any changes on parameters will affect the original variables.
    {
        string temp = s1;
        s1 = s2;
        s2 = temp;
        System.Console.WriteLine("Inside the method: {0} {1}", s1, s2);
        testing.Text = s1;
        testing1.Text = s2;
    }

    public void Switch(object sender, EventArgs e)
    {
        string str1 = "en";
        string str2 = "ja";
        System.Console.WriteLine("Inside Main, before swapping: {0} {1}", str1, str2);

        SwapStrings(ref str1, ref str2);
    }
}

我想要做的就是每次点击按钮,&#34;来自&#34;和&#34;到&#34;交换。但是现在代码只对第一次点击有效。我认为代码必须有某种内存才能保存最后一个值。任何人都可以帮助代码吗?

2 个答案:

答案 0 :(得分:1)

这是因为您始终使用相同的str1str2值。您需要获取当前标签值而不是固定标签值。

尝试在Swicth方法中将其更改为此内容:

string str1 = testing.Text;
string str2 = testing1.Text;

在旁注中,在这种情况下通过引用没有任何意义,在方法调用之后,你没有对原始变量做任何事情。

答案 1 :(得分:1)

使用页面加载设置默认值,并在按下开关按钮然后切换值时检查ispostback;

public partial class WebForm2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                testing.Text = "en";
                testing1.Text = "ja";
            }

        }

        protected void Switch(object sender, EventArgs e)
        {
            string tempLanguage = testing1.Text;

            testing1.Text = testing.Text;
            testing.Text = tempLanguage;

        }
    }