当前位置:  开发笔记 > 编程语言 > 正文

在ASP.NET中转换/访问QueryString值

如何解决《在ASP.NET中转换/访问QueryString值》经验,为你挑选了2个好方法。

我很好奇每个人在ASP.NET中处理/抽象QueryString的工作.在我们的一些网络应用程序中,我在网站上看到了很多这样的内容:

int val = 0;
if(Request.QueryString["someKey"] != null)
{
val = Convert.ToInt32(Request.QueryString["someKey"]);
}

有什么更好的方法来处理这种严重性?



1> 7wp..:

我倾向于将它们抽象为属性的想法.例如:

        public int age { 
        get
        {
            if (Request.QueryString["Age"] == null)
                return 0;
            else
                return int.Parse(Request.QueryString["Age"]);                                    
        }
    }

如果您愿意,可以添加更多验证.但我倾向于喜欢用这种方式包装我的所有查询字符串变量.

编辑:---另外,另一张海报指出,你必须在每一页上创建这些属性.我的回答是你没有.您可以在一个可以调用"QueryStrings"或类似内容的类中创建这些属性.然后,您可以在要访问查询字符串的每个页面中实例化此类,然后您可以执行类似的操作

var queryStrings = new QueryStrings();
var age = queryStrings.age;

这样,您就可以封装所有逻辑,以便在单个可维护位置访问和处理每种类型的查询变量.

EDIT2:---因为它是类的一个实例,你也可以使用依赖注入在你使用它的每个地方注入QueryStrings类. StructureMap做得很好.这也允许您模拟QueryStrings类并注入,如果您想进行自动单元测试.比ASP.Net的Request对象更容易模拟它.


这可能会引发异常!

2> Ian Suttle..:

有一点是你没有在这里捕捉空白值.您可能有一个类似" http://example.com?someKey=&anotherKey=12345 " 的网址,在这种情况下,"someKey"参数值为""(空).您可以使用string.IsNullOrEmpty()来检查null和empty状态.

我还将"someKey"更改为存储在变量中.这样你就不会在多个地方重复文字字符串.它使这更容易维护.

int val = 0;
string myKey = "someKey";
if (!string.IsNullOrEmpty(Request.QueryString[myKey]))
{
    val = int.Parse(Request.QueryString[myKey]);
}

我希望有所帮助!

伊恩

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有