c# - 我应该如何处理可选查询字符串的值?

标签 c# asp.net null request.querystring

我对 C# 和 ASP.NET 还很陌生,所以请耐心听我讲这一点。我正在设置一个从 url 接收查询字符串的页面。然后它将这些字符串传递给另一个方法(实际上是在另一个类中),该方法根据查询字符串的值继续执行许多操作。

一般结构看起来像这样,其中 DoSomething() 实际上是另一个类的一部分,该类将被许多不同的页面使用:

pretected void Page_Load (object sender, EventArgs e)
{
    DoSomething (Request.QueryString["name"]);
}

public void DoSomething (string UrlVariable)
{
    // if UrlVariable isn't set, initialize it to some value
    // do stuff with UrlVariable
}

这就是我想知道的:

  1. 如果 url 中未定义查询字符串“name”,Request.QueryString 将返回什么?空字符串?
  2. 如果它返回 null,如果我尝试将 null 传递给需要字符串的方法,会发生什么情况?整个程序会崩溃吗?或者我可以在 DoSomething() 方法中检查 null 吗(收到空字符串后)?

“名称”是可选的,因此如果用户没有设置它,我想检测它并将其初始化为某个默认值。不过,如果可能的话,我想将任何验证放在 DoSomething() 中,而不是在请求字符串的每个页面上进行检查。

提前致谢!

最佳答案

如果查询字符串中没有定义“name”,它确实会返回 null 。如果您尝试将 null 传递给方法(例如 string.Format),您通常会得到 ArgumentNullException 。处理此问题的一个好方法是在将值传递到 DoSomething 时使用空合并运算符。例如:

DoSomething (Request.QueryString["name"] ?? "MyDefaultString");

DoSomething虽然是您的,但您可以选择将此逻辑放在那里(取决于它是否被重用),以保持代码干燥。

关于c# - 我应该如何处理可选查询字符串的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4089724/

相关文章:

c# - MySqlDataReader - 阅读器关闭时尝试读取无效

asp.net - 将 ASP 控件动态添加到表中

javascript - 图像返回值 "null"

c# - 购物车问题,asp.net c#

c# - 如何在 DateTimePicker 中设置字体大小

c# - 在 DocumentDB 中插入 json 文档

asp.net - 将自动增量 ID 与 ASP.NET 复选框列表结合使用

c# - 'Class' 是一个命名空间,但像 'type' 一样使用

python - 如何处理 lambda 表达式中的正则表达式和空值?

c++ - 如何检查指针是否指向 NULL?