【问题标题】:C# - IF with more string variables and OR operatorC# - 带有更多字符串变量和 OR 运算符的 IF
【发布时间】:2020-03-20 06:57:15
【问题描述】:

我想检查是否有任何变量为空或 null,换句话说,我想检查是否发送了所有参数。 我有这段代码,但它不起作用。

    [HttpGet]
    [Route("{regid}/{year}")]
    public HttpResponseMessage Get(string regid, int? year, string un, string ps)
{
    var isRegIDNumeric = int.TryParse(regid, out _);
    if (!isRegIDNumeric || year == null || (String.IsNullOrEmpty(un)) || (String.IsNullOrEmpty(ps)))
    {
     ...
    }

如果我这样调用,缺少一个参数,IF 不起作用

localhost/test/?regid=001&year=2019&un=ws.test

我收到了这条消息:

<Error>
  <Message>No HTTP resource was found that matches the request URI 
  'localhost/test/?regid=001&year=2019&un=ws.test'.
  </Message>
  <MessageDetail>No action was found on the controller 'test' that matches 
  the request.
  </MessageDetail>
</Error>

如果我使用所有参数调用一切正常,则执行整个过程。

localhost/test/?regid=001&year=2019&un=ws.test&ps=test

当我只有 2 个变量时...

[HttpGet]
[Route("{regid}/{year}")]
public HttpResponseMessage Get(string regid, int? year)
{
    var isRegIDNumeric = int.TryParse(regid, out _);
    if (!isRegIDNumeric || year == null)
    {
     ...
    }

这样调用,缺少一个参数...

localhost/test/?regid=001

一切正常,IF定期执行。

如果其中任何一个为空或为空,如何使用所有 4 个变量制作函数式 IF?

【问题讨论】:

  • 您告诉代码不起作用,但您没有告诉输入(失败的情况)和这种情况下的预期输出!代码看起来是正确的,所以也许你的数据不是你想象的那样!你调试了吗?
  • 如果我省略了任何参数,则应该执行 IF 代码。如果我省略 regno 或 year 但如果我省略 un 或 ps IF 代码未执行,现在可以工作
  • 您能否给出您认为应该导致执行 IF 语句的 un 和 ps 的具体值,但事实并非如此。代码看起来应该可以工作。
  • 所写的问题确实包含我们为您提供帮助所需的信息。问题可能不在显示的代码中。您需要向我们展示您是如何调用该函数的。
  • 我添加了更多示例。我想检查是否发送了所有参数。

标签: c# if-statement


【解决方案1】:

在您的 4 个参数示例中,两个字符串参数都是必需的。这就是您收到错误消息的原因。
如果您希望它们是可选的,请将它们指定为默认值 null。比 if 语句更有效。
或者添加另一个 Get() 方法。

【讨论】:

  • 所有参数都是强制性的,如果缺少其中一个,我想执行 IF。
  • 可选我的意思是发送不带参数的请求并在控制器中验证它们。否则,您必须在发送请求或处理错误消息之前检查参数。
【解决方案2】:

我相信this另一个问题有你的答案,并证实了David Pivotar所说的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 2013-04-09
    • 2021-02-27
    • 1970-01-01
    相关资源
    最近更新 更多