如何将多个字符串值从一个页面传递到另一个页面

本文关键字:另一个 一个 字符串 | 更新日期: 2023-09-27 18:27:34

我发现了如何使用查询字符串将一个值作为字符串从一个文本框从一个页面传递到另一个页面。

但我不知道如何传递多个字符串值,例如,我有一个wrkTbx、rstTbx和roundTbx。

如何将这三个值都传递到另一个页面?

这是我目前的实现方式:

训练页面:

        private void appBarAddBtn_Click(object sender, EventArgs e)
        {
            NavigationService.Navigate(new Uri("/MainPage.xaml?key=" + wrkTbx.Text, UriKind.Relative));
        }

主页:

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            if (NavigationContext.QueryString.ContainsKey("key"))
            {
                string val = NavigationContext.QueryString["key"];
                MessageBox.Show("value is:  " + val);
            }
        }

如何将多个字符串值从一个页面传递到另一个页面

您可以用一个与号(&)分隔多个QueryString参数。但您也需要确保正确地对这些值进行编码,因为它们可能包含特殊字符(例如,与号)。

这是您代码的修改版本,它传递您提到的所有值。

训练页面:

private void appBarAddBtn_Click(object sender, EventArgs e)
{
    string url = "/MainPage.xaml" +
        "?wrkTbx=" + System.Net.WebUtility.UrlEncode(wrkTbx.Text) +
        "&rstTbx=" + System.Net.WebUtility.UrlEncode(rstTbx.Text) +
        "&roundTbx=" + System.Net.WebUtility.UrlEncode(roundTbx.Text);
    NavigationService.Navigate(new Uri(url, UriKind.Relative));
}

主页:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    if (NavigationContext.QueryString.ContainsKey("wrkTbx"))
    {
        string wrkTbx = NavigationContext.QueryString["wrkTbx"];
        MessageBox.Show("wrkTbx value is: " + wrkTbx);
    }
    if (NavigationContext.QueryString.ContainsKey("rstTbx"))
    {
        string rstTbx = NavigationContext.QueryString["rstTbx"];
        MessageBox.Show("rstTbx value is: " + rstTbx);
    }
    if (NavigationContext.QueryString.ContainsKey("roundTbx"))
    {
        string roundTbx = NavigationContext.QueryString["roundTbx"];
        MessageBox.Show("roundTbx value is: " + roundTbx);
    }
}
Response.Redirect(String.Format("Default2.aspx?wrkTbx.Text={0}&rstTbx.Text={1}&roundTbx.Text={2}",Server.UrlEncode(wrkTbx.Text),Server.UrlEncode(rstTbx.Text),Server.UrlEncode(roundTbx.Text)));

Server.UrlDecode(Request.QueryString["wrkTbx.Text"]);
Server.UrlDecode(Request.QueryString["rstTbx.Text"]);
Server.UrlDecode(Request.QueryString["roundTbx.Text"]);

适用于wp8

//send data
NavigationService.Navigate(new Uri("/MainPage.xaml?key=" + wrkTbx.Text + "&key2=" + wrkTbx2.Text, UriKind.Relative));
//retrive the information 
string key,stringKey2;
int key2;
if (NavigationContext.QueryString.TryGetValue("key", out key)){
  // use key value
}
if (NavigationContext.QueryString.TryGetValue("key2", out stringKey2)){
    key2 = Int32.Parse(stringKey2); // use key2 value
}

适用于Windows Phone 8.1

public class model
{
   public string key{ get; set; }
   public int key2{ get; set; }
}
//send data
Frame.Navigate(typeof(MainPage), new PassedData { key= "my name", key2= 10 });
// get data
protected override void OnNavigatedTo(NavigationEventArgs e){
    model= e.Parameter as model;
}