C# 如果触发System.NullReferenceException,是否有方法重定向到新页面?
我将代码配置为从asp.net标识中提取用户id,然后检查它是否与候选id关联,以加载该用户的查看候选页面 当然,如果候选id为null,它会抛出异常 我有没有办法告诉控制器,如果抛出异常,将重定向到新操作C# 如果触发System.NullReferenceException,是否有方法重定向到新页面?,c#,asp.net-mvc,C#,Asp.net Mvc,我将代码配置为从asp.net标识中提取用户id,然后检查它是否与候选id关联,以加载该用户的查看候选页面 当然,如果候选id为null,它会抛出异常 我有没有办法告诉控制器,如果抛出异常,将重定向到新操作 我尝试过if(candidate.CandidateId
我尝试过if(candidate.CandidateId<1 | | CandidateId.ToString()==null)之类的if语句,但无论哪种方式,都会出现异常,因为candidate Id为null。听起来好像你想得太多了。这里确实没有理由涉及异常处理,应用程序逻辑也不应该依赖异常处理 如果问题是
candidate
为null
,则检查candidate
是否为null
:
if (candidate == null)
{
// perform redirect and return
}
// the rest of your logic relying on candidate
在问题中,您声明实际为
null
的是CandidateId
。对我来说,这听起来不太可能,但我想在你的设置中可能是这样的。如果是这样的话,结构仍然是一样的:
if (candidate.CandidateId == null)
{
// perform redirect and return
}
// the rest of your logic relying on candidate.CandidateId
或者如果CandidateId
是可为空的:
您可以使用try/catch语句块来捕获异常并重定向。我会按照这里概述的流程使用一些东西,但是@David是正确的-不要将异常用于流控制。听起来有点像候选者
本身是空的,在其中撒一些?
,它应该按预期运行。编辑-哦,右键单击第一个代码块。阿萨维尔:我同意候选人可能是这里的罪魁祸首。根据总体逻辑,使用?
可能是合适的。在我看来,OP只是想在标识返回空用户时执行重定向,我怀疑最简单的方法就是检查返回的结果本身是否为null
。对-我不知怎么地忽略了您的第一个代码块示例。干杯
if (!candidate.CandidateId.HasValue)
{
// perform redirect and return
}
// the rest of your logic relying on candidate.CandidateId