use*_*539 11 asp.net-mvc razor
如何在Razor 2中有条件地呈现HTML元素?
例如,假设我有标签
<div class="someclass">
<p>@somevalue</p>
</div>
Run Code Online (Sandbox Code Playgroud)
如果@somevalue的值等于1,我想要抑制<-div->标签的渲染.在Razor中有一种简单的方法可以做到这一点,就像我可能"隐藏"<-div->标签一样在浏览器中使用Knockout.js,我可能会:
<div class="someclass" data-bind="showWhenTrue: someValue != 1">
<p data-bind="text: someValue"></p>
</div>
Run Code Online (Sandbox Code Playgroud)
目前,我所拥有的最佳Razor替代方案是:
@if (someValue != 1) {
<div class="someclass">
<p>@somevalue</p>
</div>
}
Run Code Online (Sandbox Code Playgroud)
Eri*_*sch 15
有很多方法可以做到这一点.首先,应该注意你的淘汰代码实际上并没有从输出中删除html,它只是将其显示设置为隐藏.
您实际使用的剃刀代码会从呈现的HTML中删除代码,因此这是一个非常不同的东西.
要回答您的问题,我们需要知道您要实现的目标.如果你只是想隐藏显示,你可以简单地做这样的事情:
<div class="someclass" style="display: @{ somevalue == 1 ? @:"hidden" : @:"block" };">
<p>@somevalue</p>
</div>
Run Code Online (Sandbox Code Playgroud)
你也可以用一个类来做:
<div class="someclass @{ somevalue == 1 ? @:"HideMe" : @:"ShowMe" }">
<p>@somevalue</p>
</div>
Run Code Online (Sandbox Code Playgroud)
如果你想从输出中删除代码,那么你可以做你已经做过的事情.我很确定你发现的内容如此令人反感......但如果你想要其他选择,你可以创建一个Html帮手,你可以使用剃刀助手,你可以使用Display或EditorTemplate ....
这个名单实际上很长,我只是在表面上......
| 归档时间: |
|
| 查看次数: |
11328 次 |
| 最近记录: |