如何修复MVC项目中_Layout.cshtml引发的'AspNetCoreGeneratedDocument.Views_Shared__Layout.<ExecuteAsync>b__35_1()' XmlException错误
解决MVC导航栏添加下拉菜单和搜索表单后的XmlException错误
这个XmlException: '.', hexadecimal value 0x00, is an invalid character错误通常是HTML结构不合法或Bootstrap资源冲突导致Razor视图解析异常。结合你的代码,我整理出几个关键问题和修复方案:
1. 错误的导航项HTML结构
第二个导航项的<li>标签错误套用了navbar-nav flex-grow-1类(这个类属于父级<ul>),<li>应该使用nav-item类来保证结构合规:
<!-- 错误代码 --> <li class="navbar-nav flex-grow-1"> <a class="nav-link text-dark" asp-controller="Movies" asp-action="Index"><i class="badge-info bi-film"></i>Movies</a> </li> <!-- 修正后 --> <li class="nav-item"> <a class="nav-link text-dark" asp-controller="Movies" asp-action="Index"><i class="badge-info bi-film"></i>Movies</a> </li>
2. Dropdown触发属性冲突
Bootstrap 5中下拉菜单只需要data-bs-toggle="dropdown"触发,你额外添加的data-toggle="button"会导致逻辑混乱,需要删除:
<!-- 错误代码 --> <a class=" nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="badge-info bi-gear"></i>Management</a> <!-- 修正后 --> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="badge-info bi-gear"></i> Management</a>
3. 重复引入Bootstrap资源引发冲突
你同时引入了本地的bootstrap.bundle.min.js(已包含Popper.js)和CDN的bootstrap.min.js,这会造成脚本冲突;CSS也存在重复引入问题,保留一套资源即可:
<!-- 删除重复的CDN脚本 --> <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.1.1/js/bootstrap.min.js" ...></script> --> <!-- 保留本地bundle版本(已集成Popper) --> <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<!-- 删除重复的CDN CSS --> <!-- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.1.1/css/bootstrap.min.css" ...> --> <!-- 保留本地Bootstrap CSS --> <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
4. 替换Bootstrap 5弃用的form-inline类
Bootstrap 5已移除form-inline,改用d-flex实现行内表单布局:
<!-- 错误代码 --> <form class="form-inline my-2 my-lg-0" asp-controller="Movies" asp-action="Filter" style="padding-right:25px;"> <!-- 修正后 --> <form class="d-flex my-2 my-lg-0" asp-controller="Movies" asp-action="Filter" style="padding-right:25px;">
修复以上问题后重新运行应用,应该就能解决这个XmlException错误了。
内容的提问来源于stack exchange,提问作者Emmanuel2103
相关产品推荐
相关产品推荐

