ASP.NET MVC共享布局Razor页空引用异常错误修复求助
修复ASP.NET MVC共享布局的NullReferenceException及侧边栏下拉功能
一、修复System.NullReferenceException错误
错误原因
- 直接访问
ConfigurationManager.AppSettings["Applicant Tracking System"]时,若该配置项不存在会返回null,调用ToLower()会触发空引用异常。 - 代码中
AppSettings[""]是无效空键,必然返回null,拼接字符串时也会引发问题。
修复后的导航栏代码
<div class="navbar navbar-inverse navbar-fixed-top height5"> <div class="navbar-header"> <button type="button" class="btn" data-toggle="collapse" data-target=".navbar-collapse" id="make-small-nav"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> @{ // 先取出配置值并做空值兼容 var atsSetting = System.Configuration.ConfigurationManager.AppSettings["Applicant Tracking System"] ?? string.Empty; // 修正空键问题,这里假设你原本想取某个有效配置项,比如"AppSuffix",无配置则用空串 var extraSetting = System.Configuration.ConfigurationManager.AppSettings["AppSuffix"] ?? string.Empty; } @if (atsSetting.ToLower() == "true") { @Html.ActionLink($"Applicant Tracking System{extraSetting}", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" }) } else { @Html.ActionLink(atsSetting, "Index", "Home", new { area = "" }, new { @class = "navbar-brand" }) } </div> <div style="float:right"> @if (Session["username"] != null) { <text> Welcome, @Session["username"]! </text> <span> @Html.ActionLink(" ", "Index", "Home", new { area = "" }, new { @class = "fa fa-sign-out fa-2x" }) </span> } </div> </div>
额外配置检查
确保Web.config中存在对应配置项,示例:
<appSettings> <add key="Applicant Tracking System" value="true" /> <!-- 若需要拼接额外内容,添加对应配置 --> <add key="AppSuffix" value="v1.0" /> </appSettings>
二、实现侧边栏菜单下拉展开功能
利用Bootstrap折叠组件实现下拉效果,修改后的侧边栏代码:
<div class="maincover LeftBar"> <div class="navbar-collapse collapse"> <div class="nav navbar-nav"> <!-- MASTER MAINTENANCE 下拉组 --> <div class="Ul-span"> <a role="button" data-toggle="collapse" data-target="#masterMaintenanceMenu" aria-expanded="false" aria-controls="masterMaintenanceMenu"> MASTER MAINTENANCE <span class="fa fa-chevron-down"></span> </a> </div> <div class="collapse" id="masterMaintenanceMenu"> <div class="list-group"> <a class="list-group-item" role="button" href="@Url.Action("PositionList", "Position")"> <span class="fa fa-file"></span> <b>MM POSITION</b> </a> <a class="list-group-item" role="button" href="@Url.Action("CandidateList", "Candidate")"> <span class="fa fa-file"></span> <b>MM CANDIDATE</b> </a> </div> </div> <!-- INTERVIEW TRACKING 下拉组 --> <div class="Ul-span"> <a role="button" data-toggle="collapse" data-target="#interviewTrackingMenu" aria-expanded="false" aria-controls="interviewTrackingMenu"> INTERVIEW TRACKING <span class="fa fa-chevron-down"></span> </a> </div> <div class="collapse" id="interviewTrackingMenu"> <div class="list-group"> <a class="list-group-item" role="button" href="@Url.Action("Index", "Interview")"> <span class="fa fa-file"></span> <b>INTERVIEW</b> </a> </div> </div> </div> </div> </div>
功能说明
- 通过
data-toggle="collapse"和data-target="#菜单ID"绑定触发按钮与下拉内容。 - 下拉内容默认折叠,点击标题可切换展开/收起状态。
- 添加下拉图标提示交互,可通过CSS控制图标旋转优化视觉反馈。
内容的提问来源于stack exchange,提问作者Alfred Goh
相关产品推荐
相关产品推荐

