如何解决如何检查customPrincipal是否为null?
我有一个customPrincipal,用于在剃刀文件中设置用户名。我的问题是,当我打开运行项目时,它会尝试访问剃须刀页面中的该字段,并且由于我尚未登录,因此得到object reference is not set to an instance of an object
。登录后,由于设置了用户名令牌,该错误消失了。
现在,我要这样做,以便如果用户名字段为空(用户未登录)它将无法访问它
这是我的代码:
CustomPrincipal.cs
public class CustomPrincipal : ICustomPrincipal
{
public CustomPrincipal(string username)
{
Identity = new GenericIdentity(username);
}
public string currentUsername { get; set; }
}
ICustomPrincipal.cs
public class ICustomPrincipal : IPrincipal
{
public string currentUsername { get; set; }
public IIdentity Identity { get; set; }
public bool IsInRole(string role) { return false; }
}
NavigationBar.cshtml
<a class="nav-link" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="d-inline-block float-left user-icon pt-0"><i class="fas fa-user fa-1x" aria-hidden="true"></i> </span>
<span class="d-inline-block"><p class="mb-0">@((User as AE.Web.Gwic.Models.CustomPrincipal).currentUsername)</p></span>
</a>
我尝试使用以下内容,但它也给出了相同的错误。 有人可以给我一些启发吗?
<a class="nav-link" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="d-inline-block float-left user-icon pt-0"><i class="fas fa-user fa-1x" aria-hidden="true"></i> </span>
@if (String.IsNullOrWhiteSpace((User as AE.Web.Gwic.Models.CustomPrincipal).currentUsername))
{
<span class="d-inline-block"><p class="mb-0">@((User as AE.Web.Gwic.Models.CustomPrincipal).currentUsername)</p></span>
}
</a>
解决方法
发生了什么事,您正在尝试访问null对象上的currentUsername(这就是引发异常的原因)。解决方案是检查实际的is对象是否为null而不是currentUsername:
var array_html = "";
var data_array = boroughs[property];
for (var i in data_array) {
array_html +=
"<b>" + "<u>"+
data_array[i]["business"] +
"</b></u><br />" + "<i>" +
data_array[i]['adderess'] +
"</i>"+
data_array[i]['owner'] +
"<br />"+
'<a href="http://'+
data_array[i]['website'] + '" target=_blank" title="Opens in a new window">' +
data_array[i]['website']+ '</a>'+
data_array[i]['neighbourhood'] +
"<br />"+
'<a href="'+
data_array[i]['maps']+ '" target=_blank" title="Opens in a new window">' +
'<p> Open Maps </p>' +'</a>'+ "<p class='products'>"+ //products is defined
data_array[i]["products"]+ '</p>' +
"<br />"+ "<br />";
}
var collapse_html =
'<div class="collapse show" id="' +
property.split(" ").join("_") +
'">' +
'<div class="card card-body">' +
array_html +
"</div>" +
"</div>";
final_html += boroughs_html + collapse_html;
}
return final_html;
}
//search functionality
const search_btn_input = document.getElementsByClassName(
"search_btn_input "
)[0];
const categories = document.getElementsByClassName("category_name");
const products = document.getElementsByClassName("products");
search_btn_input.addEventListener("input",(e) => {
var search_key = search_btn_input.value.toUpperCase();
for (var i in categories) {
var category_name = categories[i].innerHTML;
var products_name = products[i].innerHTML;
if (category_name != undefined) {
category_name = category_name.toUpperCase();
} else {
return;
}
//search button recognizing the word
if (category_name.includes(search_key)) {
categories[
i
].parentElement.parentElement.parentElement.parentElement.style.order = -1;
} else {
categories[
i
].parentElement.parentElement.parentElement.parentElement.style.order = 0;
}
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。