写这篇长篇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">
<%}%>
答案 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))
{
}