重写如果陈述更加一致

时间:2017-12-14 17:08:32

标签: c# asp.net

写这篇长篇if语言会更好吗?唯一改变的是条件中的d=...

<%
if (
Request.Url.ToString().Contains("d=36423")
|| Request.Url.ToString().Contains("d=39252")
|| Request.Url.ToString().Contains("d=39280")
|| Request.Url.ToString().Contains("d=39251")
|| Request.Url.ToString().Contains("d=39246")
|| Request.Url.ToString().Contains("d=39245")
|| Request.Url.ToString().Contains("d=39244")
|| Request.Url.ToString().Contains("d=39243")
|| Request.Url.ToString().Contains("d=39242")
|| Request.Url.ToString().Contains("d=39241")
|| Request.Url.ToString().Contains("d=39240")
|| Request.Url.ToString().Contains("d=26009")
|| Request.Url.ToString().Contains("d=39239")
|| Request.Url.ToString().Contains("d=39238")
|| Request.Url.ToString().Contains("d=39237")
|| Request.Url.ToString().Contains("d=38816")
)
{%>

<div class="page-desktop-nav">

  <%} else {%>
  <div class="mobile-nav">
<%}%>

4 个答案:

答案 0 :(得分:2)

您可以将值存储在数组中,并使用以下内容:

<%  
var arr = new string[]
  {
    "36423",
    "39252",
    "39280",
    "39251",
    "39246",
    "39245",
    "39244",
    "39243",
    "39242",
    "39241",
    "39240",
    "26009",
    "39239",
    "39238",
    "39237",
    "38816"
  };

  string url = Request.Url.ToString();
  if (arr.Any(s => url.Contains(string.Format("d={0}", s)))) {
%>

答案 1 :(得分:1)

您应该使用Request.QueryString["d"]查找d参数的值,然后检查它是否包含在数组或集合中。

答案 2 :(得分:0)

您可以将所有十进制值存储在一个数组中,在for循环中可以写入d = arr [i]

它会删除多次写同一行代码

感谢。

答案 3 :(得分:0)

可能会将这些扩展方法添加到您的库中:

static public class ExtensionMethods
{
    static public bool ContainsAny(this string input, IEnumerable<string> searchFor) 
    {
        return searchFor.Any( s => input.Contains(s) );
    }
    static public bool ContainsAny(this string input, params string[] searchFor) 
    {
        return searchFor.Any( s => input.Contains(s) );
    }
}

并像这样使用:

    if (request.Url.ToString().ContainsAny("d=36423","d=39252","d=39280,"etc."))
    {
    }

或者

    var lookup = new[] {"d=36423","d=39252","d=39280","etc"};
    if (request.Url.ToString().ContainsAny(lookup))
    {
    }