为何@if语句块内的partial标签会导致CSHTML代码解析异常?
Razor视图中@if块内Partial标签引发HTML标签识别错误的解决方法
问题场景
作为C#和Razor新手,项目中通过Partial视图展示多个链接,大部分正常,但位于@if语句块内的Partial标签导致VSCode无法正确识别HTML开闭标签,出现报错。
错误代码示例
主视图代码:
@if (x != 1) { <div class="pleasework"> <p>Blah Blah Blah <partial name="_PartialLink" /><strong>What is wrong with you?</strong></a></p> </div> }
Partial视图_PartialLink.cshtml内容:
<a target="_blank" href="https://stackoverflow.com/questions/ask">
具体报错
- 开头的
<p>标签提示未闭合 - 结尾的
</p>标签提示从未打开 </a>的</部分被当作文本显示
解决方案
由于Partial中仅输出未闭合标签属于不良实践,调整实现方式如下:
- 修改Partial视图,定义字符串模型,将完整的链接标签包含在内:
@model string <a target="_blank" href="https://stackoverflow.com/questions/ask">@Model</a>
- 主视图中修改调用方式,传入模型并使用闭合的
<partial>标签:
@if (x != 1) { <div class="pleasework"> <p>Blah Blah Blah <strong><partial name="_PartialLink" Model=@("What is wrong with you?")></partial></strong></p> </div> }
调整后,VSCode的HTML标签识别错误即可解决,同时也符合Razor视图的最佳实践。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

