首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ASP.NET中转换/访问QueryString值

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

Stack Overflow用户
提问于 2009-03-02 23:23:41
回答 7查看 17.5K关注 0票数 21

我很好奇每个人都做了些什么来处理/抽象ASP.NET中的QueryString,在我们的一些web应用中,我在整个网站上看到了很多这样的东西:

代码语言:javascript
运行
复制
int val = 0;
if(Request.QueryString["someKey"] != null)
{
val = Convert.ToInt32(Request.QueryString["someKey"]);
}

有什么更好的方法来处理这种粗俗吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-03-02 23:39:48

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

代码语言:javascript
运行
复制
        public int age { 
        get
        {
            if (Request.QueryString["Age"] == null)
                return 0;
            else
                return int.Parse(Request.QueryString["Age"]);                                    
        }
    }

如果你愿意,你可以添加更多的验证。但是我倾向于这样包装我所有的查询字符串变量。

编辑:-也正如另一位发帖者指出的那样,你必须在每个页面上创建这些属性。我的回答是不,你不需要。您可以在称为"QueryStrings“或其他名称的单个类中创建这些属性。然后,您可以在想要访问查询字符串的每个页面中实例化这个类,然后可以简单地执行如下操作

代码语言:javascript
运行
复制
var queryStrings = new QueryStrings();
var age = queryStrings.age;

这样,您就可以将用于访问和处理每种类型的查询变量的所有逻辑封装在一个可维护的位置中。

EDIT2:-因为它是类的一个实例,所以您还可以使用依赖项注入来将QueryStrings类注入到您使用它的任何地方。StructureMap在这方面做得很好。这还允许您模拟QueryStrings类并注入它,如果您想进行自动化单元测试的话。与ASP.NET的Request对象相比,模拟这个对象要容易得多。

票数 25
EN

Stack Overflow用户

发布于 2009-03-02 23:33:42

一件事是你没有在这里捕获空白值。您可能有一个类似于"http://example.com?someKey=&anotherKey=12345“的url,在本例中,"someKey”参数值是"“(空)。您可以使用string.IsNullOrEmpty()检查null和empty状态。

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

代码语言:javascript
运行
复制
int val = 0;
string myKey = "someKey";
if (!string.IsNullOrEmpty(Request.QueryString[myKey]))
{
    val = int.Parse(Request.QueryString[myKey]);
}

我希望这对你有帮助!

伊恩

票数 8
EN

Stack Overflow用户

发布于 2009-03-03 00:17:59

编写某种帮助器方法(库)来处理它...

代码语言:javascript
运行
复制
public static void GetInt(this NameValueCollection nvCol, string key, out int keyValue, int defaultValue)
{
    if (string.IsNullOrEmpty(nvCol[key]) || !int.TryParse(nvCol[key], out keyValue))
        keyValue = defaultValue;
}

或者其他类似的东西...

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/604480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档