我想创建一个简单的按钮,它会在每次点击时交换字符串值。这是我的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;交换。但是现在代码只对第一次点击有效。我认为代码必须有某种内存才能保存最后一个值。任何人都可以帮助代码吗?
答案 0 :(得分:1)
这是因为您始终使用相同的str1
和str2
值。您需要获取当前标签值而不是固定标签值。
尝试在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;
}
}