2017-08-16 112 views
1

我想创建一个简单的按钮,每次点击时都会交换字符串值。这是我的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); 
    } 
} 

所有我想要做的就是每次我按一下按钮,在 “从” 和 “到” 交换价值。但是现在的代码只对第一次点击有影响。我认为代码必须有某种内存才能保存最后的值。任何人都可以帮助代码吗?

回答

1

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

尝试在Swicth方法将其更改为这样:

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

在一个侧面说明存在通过引用传递在这种情况下没有意义的,你是不是他的方法调用之后做与原来的变量什么。

+0

嗨,谢谢你的快速回复。那么初始值呢?我想从=“en”的第一个值到=“ja”。然后每次点击交换按钮 –

+1

只需在aspx文件中直接设置这些默认值:' en' – musefan

1

使用页面加载设置默认值,并检查ispostback当你点击swtch按钮,然后切换值;

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; 

     } 
    }