【发布时间】:2020-03-31 11:30:21
【问题描述】:
我正在尝试创建从查询字符串读取的通用函数,然后将值转换为正确的类型。例如 : 说网址:www.myWeb.com?intParm=111&strParam=hi There&guidParam=0DAE20CD-383B-41F8-B2A5-6231CE5012F0
第一次尝试:
public object GetPage_Param(string _ParamName, object _Default)
{
object Value = null;
if (HttpContext.Current.Request.QueryString[_ParamName] != null)
Value = HttpUtility.UrlDecode(HttpContext.Current.Request.QueryString.GetValues(_ParamName)[0]);
if (Value != null)
Value = (_Default == null) ? string.Empty : _Default;
if (Value is int)
return System.Convert.ToInt32(Value);
else if (Value is Int64)
return System.Convert.ToInt64(Value);
else if (Value is double)
return System.Convert.ToDouble(Value);
else if (Value is float)
return System.Convert.ToSingle(Value);
else if (Value is decimal)
return System.Convert.ToDecimal(Value);
else if(Value is Guid)
return Guid.Parse(Value.ToString());
else
return Value;
}
我仍然需要转换,即 Guid varGuid = GetPage_Param("guidParam", Guid.Empty);
第二次尝试:
public T GetPage_Param<T>(string _ParamName, T _Default)
{
object Value = null;
if (HttpContext.Current.Request.QueryString[_ParamName] != null)
Value = HttpUtility.UrlDecode(HttpContext.Current.Request.QueryString.GetValues(_ParamName)[0]);
if (Value == null)
Value = (_Default == null) ? string.Empty : _Default;
return (T)Value;
}
我认为这不是正确的方法(:( 错误每件商品)......任何帮助,链接,新想法谢谢 :)
请注意我使用的是 asp.net 网络表单和框架 4.7.2
【问题讨论】:
-
您有什么具体原因不让框架解析您的参数吗?
-
检查值并给出默认值......我愿意接受任何建议,帮助:)
-
如果你在你的控制器方法中定义你的参数,你可以给他们默认值:
public void DoSomething(int? parm1, long parm2 = 0) -
抱歉,我忘了告诉我我使用的是 webforms :( 不是 MVC 或 web api