ASP.NET C#中如何在Index.cshtml内不使用JS根据ViewModel属性隐藏div
你的实现思路是可行的,但现有代码存在Razor语法拼接错误,style属性的引号配对、表达式输出逻辑都不正确,导致样式无法生效。
两种无JS的实现方案如下:
方案1:动态拼接style属性(元素保留在DOM中,仅隐藏)
如果需要保留该div在页面DOM结构中,仅做视觉隐藏,使用如下写法:
<div class="form-group spaced" style="@(Model.HasPackType ? "display: none;" : string.Empty)"> </div>
通过三元运算符判断属性值,当HasPackType为true时输出隐藏样式,否则输出空字符串不影响原有样式。
方案2:条件渲染元素(元素不输出到DOM)
如果该div在HasPackType为true时完全不需要用到,可以直接用Razor条件判断控制是否渲染整个元素,性能更优:
@if (!Model.HasPackType) { <div class="form-group spaced"> </div> }
这种写法下,当HasPackType为true时,整个div不会生成到页面源码中。
内容的提问来源于stack exchange,提问作者Lidprogsky
相关产品推荐
相关产品推荐

