### 2022-02-20更新

------
#### MyDbV4    V3.0.2202.2001
- *.[新增]WebDecode类新增UrlToData和GetParam函数。
- *.[新增]VarExtension类新增针对GetParam的扩展方法。
- *.[改进]WebDecode类的IsUrlSafeChar和IntToHex函数改为私有方法。
This commit is contained in:
鑫Intel 2022-02-20 16:59:25 +08:00
parent 966ebb0259
commit 4282403900
36 changed files with 468 additions and 6 deletions

2
.gitignore vendored
View File

@ -4,3 +4,5 @@ Res/
*.pdb *.pdb
**/dcu **/dcu
*.dcu *.dcu
/Source/.vs/公用控件组V4/v17/*.suo
/Source/.vs/公用控件组V4/FileContentIndex/*.vsidx

View File

@ -1449,6 +1449,68 @@
<param name="input"></param> <param name="input"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.String)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Int32)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Int64)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Decimal)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Double)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Boolean)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="T:ryCommon.RySoft"> <member name="T:ryCommon.RySoft">
<summary> <summary>
文件信息 文件信息
@ -8729,6 +8791,24 @@
<param name="str"></param> <param name="str"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:RyWeb.WebDecode.UrlToData(System.String)">
<summary>
将url里的字段分解成表单字典
</summary>
<param name="url"></param>
<returns></returns>
<exception cref="T:System.ArgumentNullException"></exception>
<exception cref="T:System.FormatException"></exception>
</member>
<member name="M:RyWeb.WebDecode.GetParam(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.String)">
<summary>
根据表单字段名获取值
</summary>
<param name="decoded"></param>
<param name="name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="T:rySafe.AES"> <member name="T:rySafe.AES">
<summary> <summary>
AES加密解密类 AES加密解密类

View File

@ -1449,6 +1449,68 @@
<param name="input"></param> <param name="input"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.String)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Int32)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Int64)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Decimal)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Double)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Boolean)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="T:ryCommon.RySoft"> <member name="T:ryCommon.RySoft">
<summary> <summary>
文件信息 文件信息
@ -8729,6 +8791,24 @@
<param name="str"></param> <param name="str"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:RyWeb.WebDecode.UrlToData(System.String)">
<summary>
将url里的字段分解成表单字典
</summary>
<param name="url"></param>
<returns></returns>
<exception cref="T:System.ArgumentNullException"></exception>
<exception cref="T:System.FormatException"></exception>
</member>
<member name="M:RyWeb.WebDecode.GetParam(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.String)">
<summary>
根据表单字段名获取值
</summary>
<param name="decoded"></param>
<param name="name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="T:rySafe.AES"> <member name="T:rySafe.AES">
<summary> <summary>
AES加密解密类 AES加密解密类

View File

@ -1449,6 +1449,68 @@
<param name="input"></param> <param name="input"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.String)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Int32)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Int64)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Decimal)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Double)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Boolean)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="T:ryCommon.RySoft"> <member name="T:ryCommon.RySoft">
<summary> <summary>
文件信息 文件信息
@ -8702,6 +8764,24 @@
<param name="str"></param> <param name="str"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:RyWeb.WebDecode.UrlToData(System.String)">
<summary>
将url里的字段分解成表单字典
</summary>
<param name="url"></param>
<returns></returns>
<exception cref="T:System.ArgumentNullException"></exception>
<exception cref="T:System.FormatException"></exception>
</member>
<member name="M:RyWeb.WebDecode.GetParam(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.String)">
<summary>
根据表单字段名获取值
</summary>
<param name="decoded"></param>
<param name="name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="T:rySafe.AES"> <member name="T:rySafe.AES">
<summary> <summary>
AES加密解密类 AES加密解密类

View File

@ -1449,6 +1449,68 @@
<param name="input"></param> <param name="input"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.String)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Int32)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Int64)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Decimal)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Double)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.VarExtension.Get(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.Boolean)">
<summary>
根据表单字段名,获取对应的值
</summary>
<param name="input"></param>
<param name="Name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="T:ryCommon.RySoft"> <member name="T:ryCommon.RySoft">
<summary> <summary>
文件信息 文件信息
@ -8702,6 +8764,24 @@
<param name="str"></param> <param name="str"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:RyWeb.WebDecode.UrlToData(System.String)">
<summary>
将url里的字段分解成表单字典
</summary>
<param name="url"></param>
<returns></returns>
<exception cref="T:System.ArgumentNullException"></exception>
<exception cref="T:System.FormatException"></exception>
</member>
<member name="M:RyWeb.WebDecode.GetParam(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}},System.String,System.String)">
<summary>
根据表单字段名获取值
</summary>
<param name="decoded"></param>
<param name="name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="T:rySafe.AES"> <member name="T:rySafe.AES">
<summary> <summary>
AES加密解密类 AES加密解密类

View File

@ -1,4 +1,11 @@
### 2022-02-09更新 ### 2022-02-20更新
------
#### MyDbV4 V3.0.2202.2001
- *.[新增]WebDecode类新增UrlToData和GetParam函数。
- *.[新增]VarExtension类新增针对GetParam的扩展方法。
- *.[改进]WebDecode类的IsUrlSafeChar和IntToHex函数改为私有方法。
### 2022-02-09更新
------ ------
#### MyDbV4 V3.0.2202.0901 #### MyDbV4 V3.0.2202.0901
- *.[改进]新增ToNString扩展函数,支持将数字转换成小数点末尾不带0的字符串。 - *.[改进]新增ToNString扩展函数,支持将数字转换成小数点末尾不带0的字符串。

View File

@ -673,5 +673,85 @@ namespace ryCommon
} }
catch { return false; } catch { return false; }
} }
/// <summary>
/// 根据表单字段名,获取对应的值
/// </summary>
/// <param name="input"></param>
/// <param name="Name"></param>
/// <param name="defValue"></param>
/// <returns></returns>
static public string Get(this Tuple<string, IEnumerable<KeyValuePair<string, string>>> input,string Name,string defValue)
{
try
{
return RyWeb.WebDecode.GetParam(input, Name, defValue);
}
catch { return defValue; }
}
/// <summary>
/// 根据表单字段名,获取对应的值
/// </summary>
/// <param name="input"></param>
/// <param name="Name"></param>
/// <returns></returns>
static public string Get(this Tuple<string, IEnumerable<KeyValuePair<string, string>>> input, string Name)
{
return input.Get(Name, "");
}
/// <summary>
/// 根据表单字段名,获取对应的值
/// </summary>
/// <param name="input"></param>
/// <param name="Name"></param>
/// <param name="defValue"></param>
/// <returns></returns>
static public int Get(this Tuple<string, IEnumerable<KeyValuePair<string, string>>> input, string Name,int defValue)
{
return input.Get(Name, defValue.ToString()).ToInt();
}
/// <summary>
/// 根据表单字段名,获取对应的值
/// </summary>
/// <param name="input"></param>
/// <param name="Name"></param>
/// <param name="defValue"></param>
/// <returns></returns>
static public long Get(this Tuple<string, IEnumerable<KeyValuePair<string, string>>> input, string Name, long defValue)
{
return input.Get(Name, defValue.ToString()).ToInt64();
}
/// <summary>
/// 根据表单字段名,获取对应的值
/// </summary>
/// <param name="input"></param>
/// <param name="Name"></param>
/// <param name="defValue"></param>
/// <returns></returns>
static public decimal Get(this Tuple<string, IEnumerable<KeyValuePair<string, string>>> input, string Name, decimal defValue)
{
return input.Get(Name, defValue.ToString()).ToDecimal();
}
/// <summary>
/// 根据表单字段名,获取对应的值
/// </summary>
/// <param name="input"></param>
/// <param name="Name"></param>
/// <param name="defValue"></param>
/// <returns></returns>
static public double Get(this Tuple<string, IEnumerable<KeyValuePair<string, string>>> input, string Name, double defValue)
{
return input.Get(Name, defValue.ToString()).ToDouble();
}
/// <summary>
/// 根据表单字段名,获取对应的值
/// </summary>
/// <param name="input"></param>
/// <param name="Name"></param>
/// <param name="defValue"></param>
/// <returns></returns>
static public bool Get(this Tuple<string, IEnumerable<KeyValuePair<string, string>>> input, string Name, bool defValue)
{
return input.Get(Name, defValue.ToString()).ToBool();
}
} }
} }

View File

@ -32,5 +32,5 @@ using System;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”: : // 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("3.0.2202.0901")] [assembly: AssemblyVersion("3.0.2202.2001")]
[assembly: AssemblyFileVersion("3.0.2202.0901")] [assembly: AssemblyFileVersion("3.0.2202.2001")]

View File

@ -422,7 +422,7 @@ namespace RyWeb
/// </summary> /// </summary>
/// <param name="ch"></param> /// <param name="ch"></param>
/// <returns></returns> /// <returns></returns>
public static bool IsUrlSafeChar(char ch) private static bool IsUrlSafeChar(char ch)
{ {
if ((((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z'))) || ((ch >= '0') && (ch <= '9'))) if ((((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z'))) || ((ch >= '0') && (ch <= '9')))
{ {
@ -446,7 +446,7 @@ namespace RyWeb
/// </summary> /// </summary>
/// <param name="n"></param> /// <param name="n"></param>
/// <returns></returns> /// <returns></returns>
public static char IntToHex(int n) private static char IntToHex(int n)
{ {
if (n <= 9) if (n <= 9)
{ {
@ -463,5 +463,58 @@ namespace RyWeb
{ {
return System.Web.HttpUtility.HtmlDecode(str); return System.Web.HttpUtility.HtmlDecode(str);
} }
/// <summary>
/// 将url里的字段分解成表单字典
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
/// <exception cref="ArgumentNullException"></exception>
/// <exception cref="FormatException"></exception>
public static Tuple<string, IEnumerable<KeyValuePair<string, string>>> UrlToData(string url)
{
if (url == null)
throw new ArgumentNullException("url");
url = url.Trim();
try
{
var split = url.Split(new[] { '?', '&' }, StringSplitOptions.RemoveEmptyEntries);
if (split.Length == 1)
return new Tuple<string, IEnumerable<KeyValuePair<string, string>>>(url, null);
//获取前面的URL地址
var host = split[0];
var pairs = split.Skip(1).Select(s =>
{
//没有用String.Split防止某些少见Query String中出现多个=,要把后面的无法处理的=全部显示出来
var idx = s.IndexOf('=');
return new KeyValuePair<string, string>(Uri.UnescapeDataString(s.Substring(0, idx)), Uri.UnescapeDataString(s.Substring(idx + 1)));
}).ToList();
return new Tuple<string, IEnumerable<KeyValuePair<string, string>>>(host, pairs);
}
catch (Exception ex)
{
throw new FormatException("URL格式错误", ex);
}
}
/// <summary>
/// 根据表单字段名获取值
/// </summary>
/// <param name="decoded"></param>
/// <param name="name"></param>
/// <param name="defValue"></param>
/// <returns></returns>
public static string GetParam(Tuple<string, IEnumerable<KeyValuePair<string, string>>> decoded, string name,string defValue)
{
var query = decoded.Item2.Where(key => key.Key == name);
if (query != null)
{
var list = query.ToList();
if (list.Count > 0)
{
return list[0].Value;
}
else { return defValue; }
}
else { return defValue; }
}
} }
} }