今天就描述下自己在自定义表单中的跳过程中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 }
该类将参数进行统一的管理,并提供方法来根据参数名获取参数值。