WinRT中如何快速获取Uri地址中的QueryString键值对信息

在WinRT中,往往涉及到获取网络资源或者截取网址信息的情形,因此跟Uri打交道的情况就比较多了。而一般情况

下需要快速准确地获取网址资源中某些特定的QueryString信息,那么选择工具是尤其重要的了。

而在WinRT中,利用WwwFormUrlDecoder类就可以完美解决问题。直接贴上代码说明一切:

XAML:

<Page
    x:Class="GetUriQueryString.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:GetUriQueryString"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid>
        <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
            <TextBlock Text="测试Uri:" FontSize="25"/>
            <TextBlock Text="http://blog.csdn.net/u010792238?viewmode=contents" FontSize="20" TextWrapping="WrapWholeWords"></TextBlock>
            <Button x:Name="getUriQueryString" Content="获取" Click="getUriQueryString_Click"/>
            <TextBlock Text="结果:" FontSize="25"/>
            <TextBlock x:Name="result" FontSize="30"/>
        </StackPanel>       
    </Grid>
</Page>

.CS:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// “空白页”项模板在 http://go.microsoft.com/fwlink/?LinkId=391641 上有介绍

namespace GetUriQueryString
{
    /// <summary>
    /// 可用于自身或导航至 Frame 内部的空白页。
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();

            this.NavigationCacheMode = NavigationCacheMode.Required;
        }

        /// <summary>
        /// 在此页将要在 Frame 中显示时进行调用。
        /// </summary>
        /// <param name="e">描述如何访问此页的事件数据。
        /// 此参数通常用于配置页。</param>
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            // TODO: 准备此处显示的页面。

            // TODO: 如果您的应用程序包含多个页面,请确保
            // 通过注册以下事件来处理硬件“后退”按钮:
            // Windows.Phone.UI.Input.HardwareButtons.BackPressed 事件。
            // 如果使用由某些模板提供的 NavigationHelper,
            // 则系统会为您处理该事件。
        }

        private void getUriQueryString_Click(object sender, RoutedEventArgs e)
        {
            //可以将要获取的信息粗略的看成键值对,一一对应即可。比如viewmode对应的是contents
            Uri uri = new Uri("http://blog.csdn.net/u010792238?viewmode=contents");
            WwwFormUrlDecoder decoder = new WwwFormUrlDecoder(uri.Query);
            //获取viewmode键对应的值
            var viewmode = decoder.GetFirstValueByName("viewmode");
            result.Text = viewmode;
            //循环获取键值
            foreach(var keyValue in decoder)
            {
                //键
                var key = keyValue.Name;
                //值
                var value = keyValue.Value;
            }  
        }
    }
}

当然就不同的语言环境,微软有不同的封装类来帮助程序员。在Console等应用中,可以使用NameValueCollection

类来获取。

Uri uri = new Uri("http://blog.csdn.net/u010792238?viewmode=contents");
NameValueCollection nvc= HttpUtility.ParseQueryString(uri.Query);
for (int index = 0; index < nvc.Count; index++)
{

    var name = nvc.Keys[index];  //键
    var value = nvc[index];           //值
}


推荐链接:【WinRT】获取 Uri 中的参数(QueryString)键值对


要在 Windows 10 创建 Toast 通知,并在其添加一个监听按钮,可以使用以下步骤: 1. 创建 XML 文件:创建一个包含 Toast 通知内容的 XML 文件。在 XML 文件,使用 `<actions>` 元素来定义一个或多个监听按钮,如下所示: ```xml <toast> <visual> <binding template="ToastGeneric"> <text>标题</text> <text>消息正文</text> </binding> </visual> <actions> <action content="按钮1" arguments="action1"/> <action content="按钮2" arguments="action2"/> </actions> </toast> ``` 在上面的代码,`<actions>` 元素定义了两个监听按钮,分别是“按钮1”和“按钮2”,它们的 `arguments` 属性分别为“action1”和“action2”。 2. 加载 XML 文件:使用 `XmlDocument` 类加载上一步创建的 XML 文件。 ```csharp XmlDocument toastXml = new XmlDocument(); toastXml.LoadXml(xml); ``` 3. 创建 Toast 通知:使用 `ToastNotification` 类创建一个 Toast 通知,并将上一步加载的 XML 文件作为参数传递给它。 ```csharp ToastNotification toast = new ToastNotification(toastXml); ``` 4. 添加按钮点击事件处理程序:使用 `toast.Activated` 事件来添加按钮点击事件处理程序。在处理程序,可以根据按钮的 `arguments` 属性来执行相应的操作。 ```csharp toast.Activated += (sender, args) => { switch(args.Argument) { case "action1": // 执行按钮1的操作 break; case "action2": // 执行按钮2的操作 break; } }; ``` 5. 显示 Toast 通知:使用 `ToastNotificationManager.CreateToastNotifier().Show()` 方法来显示 Toast 通知。 ```csharp ToastNotificationManager.CreateToastNotifier().Show(toast); ``` 这样,就可以创建带有监听按钮的 Toast 通知,并在按钮被点击时执行相应的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值