Jquery写一个if条件的更好方法

时间:2014-07-24 18:43:29

标签: asp.net-mvc if-statement razor

我正在使用jquery处理asp.net mvc代码,我必须处理if语句。如果我写的方式是正确的,我很困惑。关于折射以下代码的任何建议?

@if (Model.HasRecords)
{
    <script>
        $(function () {
            $("#cancel").hide();
        });
    </script>
}
else
{
    <script>
        $(function () {
            $("#cancel").show();
        });
    </script>
}

3 个答案:

答案 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>

谢谢!