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

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

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

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

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

     1 /// <summary>
     2     /// 参数分隔辅助类,样式如:PPI_ID|PPI20100304001,PSF_ID|PSF20101210002,
     3     /// 提供对参数的分解及返回键值列表信息
     4     /// </summary>
     5     [Serializable]
     6     public class SplitParam
     7     {
     8         /// <summary>
     9         /// 参数字符串
    10         /// </summary>
    11         /// <param name="param"></param>
    12         public SplitParam(string param)
    13         {
    14             this.Param = param;
    15         }
    16 
    17         public override string ToString()
    18         {
    19             return Param;
    20         }
    21 
    22         private string _param = string.Empty;
    23         /// <summary>
    24         /// 参数字符串
    25         /// </summary>
    26         public string Param
    27         {
    28             get { return _param; }
    29             private set
    30             {
    31                 if (!string.IsNullOrEmpty(value))
    32                 {
    33                     _param = value;
    34                 }
    35             }
    36         }
    37 
    38         /// <summary>
    39         /// 保存解析过的参数列表
    40         /// </summary>
    41         private Dictionary<string, string> _paramList = null;
    42 
    43         /// <summary>
    44         /// 获取解析后的参数列表信息,可用于参数替换等
    45         /// </summary>
    46         /// <returns></returns>
    47         public Dictionary<string, string> GetParamList()
    48         {
    49             if (_paramList == null)
    50             {
    51                 _paramList = new Dictionary<string, string>();
    52                 string[] listA = _param.Split(',');
    53                 if (listA == null || listA.Length == 0)
    54                 {
    55                     return _paramList;
    56                 }
    57 
    58                 string[] listB;
    59                 foreach (string item in listA)
    60                 {
    61                     if (!string.IsNullOrEmpty(item))
    62                     {
    63                         listB = item.Split('|');
    64                         if (listB != null & listB.Length > 1)
    65                         {
    66                             _paramList.Add(listB[0], listB[1]);
    67                         }
    68                     }
    69                 }
    70             }
    71             return _paramList;
    72         }
    73 
    74         /// <summary>
    75         /// 根据键值获取获取值
    76         /// </summary>
    77         /// <param name="key"></param>
    78         /// <returns></returns>
    79         public string GetValueByKey(string key)
    80         {
    81             GetParamList();
    82             if (_paramList != null && _paramList.ContainsKey(key))
    83             {
    84                 return _paramList[key];
    85             }
    86             return "";
    87         }
    88     }

    该类将参数进行统一的管理,并提供方法来根据参数名获取参数值。

  • 相关阅读:
    网络流之对偶图转最短路
    BZOJ5418 NOI2018屠龙勇士EXCRT
    BZOJ1951 [Sdoi2010]古代猪文 NOIP数论大杂烩
    中国剩余定理及EX及单层EXLucas定理讲解
    网络流24题之负载平衡问题
    输入一个url到浏览器页面展示都经历了哪些过程
    前端部署dist包到服务器
    img标签显示 base64格式的 图片
    字符串用react 用sha256加密
    前端下载证书文件cer用后端返回的加密数据
  • 原文地址:https://www.cnblogs.com/quluqi/p/2561040.html
Copyright © 2011-2022 走看看