我正在使用jquery处理asp.net mvc代码,我必须处理if语句。如果我写的方式是正确的,我很困惑。关于折射以下代码的任何建议?
@if (Model.HasRecords)
{
<script>
$(function () {
$("#cancel").hide();
});
</script>
}
else
{
<script>
$(function () {
$("#cancel").show();
});
</script>
}
答案 0 :(得分:3)
您可以使用Razor三元进行优化。
<script>
$(function () {
$("#cancel").@Html.Raw(Model.HasRecords ? "hide();" : "show();")
});
</script>
甚至比在JavaScript中对此烦恼更好,你可以将#cancel
元素包装在一个语句中,如果模型有任何记录,它只会将它写入输出。在你的HTML中,你可以有这样的东西(假设它是一个输入,但它可以是任何其他类型的HTML元素):
@if (Model.HasRecords) {
<input type="button" id="cancel">Cancel</input>
}
这会更有意义。
答案 1 :(得分:2)
处理某些事物的条件显示的最佳方法是$("#cancel").toggle();
因为,如果隐藏某些内容,切换将显示它。如果显示,它将隐藏它。因此,如果您需要根据页面状态确定要使用哪个函数,而不是确定它是隐藏还是显示并动态返回函数,那么您可以使用toggle
并让jquery执行此操作你。
如果这些注释是asp.net代码,你应该只是处理这里的逻辑,或者根本不将标记写入你的html,或者为#cancel html节点添加style="display:none"
。这就是在jquery的封面下为你做的显示或隐藏,所以你不妨有条件地添加javascript并自己添加这个风格。看起来更清洁
答案 2 :(得分:1)
试试这个;
<script>
$(function () {
@if (Model.HasRecords)
{
@:$("#cancel").hide();
}
else
{
@:$("#cancel").show();
}
});
</script>
谢谢!