zoukankan      html  css  js  c++  java
  • 自定义参数表单URL参数处理

    今天就描述下自己在自定义表单中的跳过程中URL参数传递的处理。

      平常的开发中,我们进行URL传参时,肯定都会定义一个有意义的参数名,让接收页面去Request获取,这没有问题,但如果是在自定义表单中,参数的名称上一般都会比较的固定,系统识别的名称无非就那约定好的一些,所以不能再通过更多的&符号来间隔的传递参数,那该如何处理呢?我们可以约定一定的格式,将参数进行数组化,通过固定的参数名传递,样子如下:PPI_ID|PPI20100304001,PSF_ID|PSF20101210002。

      这样的参数名即简练又易书写,而且系统可以很好的识别,很明显的看出参数是通过","将各个参数进行分隔,再通过"|"将参数名与参数值分隔,至于在URL中的名称就好起名了,就叫它Param了。

      在接收页的处理方面,在这里是通过独立的参数类来处理的,因为系统中的表单参数都是通过这类方式传递,所以用到的地方肯定非常多,将参数功能独立化,也是挺方便的,统一的方法去解析表单参数,更好的维护它们。直接贴下代码吧:

    /// <summary>
          /// 参数分隔辅助类,样式如:PPI_ID|PPI,PSF_ID|PSF,
          /// 提供对参数的分解及返回键值列表信息
          /// </summary>
          [Serializable]
          public class SplitParam
          {
              /// <summary>
              /// 参数字符串
             /// </summary>
             /// <param name="param"></param>
             public SplitParam(string param)
             {
                 this.Param = param;
             }
     
             public override string ToString()
             {
                 return Param;
             }
     
             private string _param = string.Empty;
             /// <summary>
             /// 参数字符串
             /// </summary>
             public string Param
             {
                 get { return _param; }
                 private set
                 {
                     if (!string.IsNullOrEmpty(value))
                     {
                         _param = value;
                     }
                 }
             }
     
             /// <summary>
             /// 保存解析过的参数列表
             /// </summary>
             private Dictionary<string, string> _paramList = null;
     
             /// <summary>
             /// 获取解析后的参数列表信息,可用于参数替换等
             /// </summary>
             /// <returns></returns>
             public Dictionary<string, string> GetParamList()
             {
                 if (_paramList == null)
                 {
                     _paramList = new Dictionary<string, string>();
                     string[] listA = _param.Split('|');
                     if (listA == null || listA.Length == 0)
                     {
                         return _paramList;
                     }
     
                     string[] listB;
                     foreach (string item in listA)
                     {
                         if (!string.IsNullOrEmpty(item))
                         {
                             listB = item.Split(',');
                             if (listB != null & listB.Length > 1)
                             {
                                 _paramList.Add(listB[0], listB[1]);
                             }
                         }
                     }
                 }
                 return _paramList;
             }
     
             /// <summary>
             /// 根据键值获取获取值
             /// </summary>
             /// <param name="key"></param>
             /// <returns></returns>
             public string GetValueByKey(string key)
             {
                 GetParamList();
                 if (_paramList != null && _paramList.ContainsKey(key))
                 {
                     return _paramList[key];
                 }
                 return "";
             }
    

      

    string str = "PPI_ID|PPI20100304001,PSF_ID|PSF20101210002";
    Response.Write(new SplitParam(str).GetValueByKey("PPI_ID"));//结果:PPI20100304001

    简介
    在C#中,Dictionary提供快速的基于兼职的元素查找。当你有很多元素的时候可以使用它。它包含在System.Collections.Generic名空间中。

    在使用前,你必须声明它的键类型和值类型。

    详细说明
    必须包含名空间System.Collection.Generic 
    Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值) 
    键必须是唯一的,而值不需要唯一的 
    键和值都可以是任何类型(比如:string, int, 自定义类型,等等) 
    通过一个键读取一个值的时间是接近O(1) 
    键值对之间的偏序可以不定义 
    创建和初始化一个Dictionary对象
    Dictionary myDictionary = new Dictionary();
    引用:http://www.cnblogs.com/henw/archive/2011/05/15/2046758.html

  • 相关阅读:
    centos6.8添加crontab定时启动任务
    centos7用户最大进程限制导致的问题排查
    centos ftp 服务器搭建
    centos6.8的坑
    华为云centos服务器挂载云硬盘
    华为云windows开启特定端口
    华为云centos上命令
    排查机器服务无法使用步骤
    高(0.10.X以上版本)低(0.10.X以下版本)版本kafka如何共存
    PHP array_column重新构建二维数组
  • 原文地址:https://www.cnblogs.com/sntetwt/p/2744730.html
Copyright © 2011-2022 走看看