【发布时间】:2016-12-22 16:02:40
【问题描述】:
我正在开发一个 Umbraco 7 网站,该网站的产品通过布尔值进行过滤。
- 真 = 男
- 错误 = 女性
我Request.QueryString.Get("gender") 并收到一个true 或false 值,我将其解析为subPage.GetPropertyValue<bool>("gender"),然后呈现出true 或false 的产品。这部分工作正常。
但是如果我在 URL 中没有任何 QueryStrying.Get("gender"),它会返回一个错误,告诉 Value cannot be null.
如何防止这种情况发生?我尝试用一个包裹var genderQuery
@if (Request.QueryString.Get("gender") != null) 但我无法从 foreach 内部获取它
我的代码:
@if (subPages.Count() > 0)
{
<ul>
@foreach (var subPage in subPages)
{
var genderQuery = Request.QueryString.Get("gender");
if (subPage.Children.Count() > 0 && subPage.GetPropertyValue<bool>("gender") == bool.Parse(genderQuery))
{
<li class="child @(CurrentPage.Name == subPage.Name ? currentClass :"")">
<a href="@subPage.Url">@subPage.Name </a>
<a href="@subPage.Parent.Parent.Url" class="@(CurrentPage.Name == subPage.Name ? currentClass : "hide")"><i class="fa fa-close"></i></a>
</li>
}
}
</ul>
}
【问题讨论】:
-
如果
genderQuery为空,即不在查询字符串中,您希望发生什么? -
@EdPlunkett:不,
genderQuery是string,根本不是bool?。 -
@JonSkeet Derp,谢谢。
-
"bool?gender" 将接受:null、true、false。然后检查性别是否为空。性别.hasValue()