Asp.net mvc Jquery是编写if条件的更好方法

Asp.net mvc Jquery是编写if条件的更好方法,asp.net-mvc,if-statement,razor,Asp.net Mvc,If Statement,Razor,我正在使用jquery编写asp.NETMVC代码,其中我必须处理if语句。我不知道我写的方式是否正确。对修改下面的代码有什么建议吗 @if (Model.HasRecords) { <script> $(function () { $("#cancel").hide(); }); </script> } else { <script> $(function ()

我正在使用jquery编写asp.NETMVC代码,其中我必须处理if语句。我不知道我写的方式是否正确。对修改下面的代码有什么建议吗

@if (Model.HasRecords)
{
    <script>
        $(function () {
            $("#cancel").hide();
        });
    </script>
}
else
{
    <script>
        $(function () {
            $("#cancel").show();
        });
    </script>
}
@if(Model.HasRecords)
{
$(函数(){
$(“#取消”).hide();
});
}
其他的
{
$(函数(){
$(“#取消”).show();
});
}

处理某物的有条件显示的最佳方法是
$(“#取消”).toggle()如中所示,如果某个内容被隐藏,则切换将显示该内容。如果它被显示,它将隐藏它。因此,如果您需要根据页面的状态确定要使用哪个函数,而不是确定它是隐藏的还是显示的并动态返回一个函数,那么您可以使用
切换
,让jquery为您完成这项工作


如果这些注释是asp.net代码,您可能只需要处理这里的逻辑,或者根本不将标记写入html,或者为#取消html节点添加一个
style=“display:none”
。这就是显示或隐藏在jquery的封面下为您所做的事情,因此您最好避免有条件地添加javascript,而只需自己添加这种样式。看起来干净多了

你可以用剃须刀优化它

<script>
    $(function () {
        $("#cancel").@Html.Raw(Model.HasRecords ? "hide();" : "show();")
    });
</script>
这会更有意义。

试试这个

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

$(函数(){
@if(Model.HasRecords)
{
@:$(“#取消”).hide();
}
其他的
{
@:$(“#取消”).show();
}
});

谢谢

您不应该使用
切换
,因为它不会来回切换。当页面加载时,它只会是一个或另一个。我知道切换就是这样做的。我只是想让他知道,如果他真的想这么做的话,这是存在的。有条件地添加脚本肯定不是解决问题的办法,如果页面上的所有Javascript都是这样,那么是的。我会使用内联添加类(而不是硬样式),甚至不用Razor将按钮添加到DOM中。您应该提前隐藏html,而不是加载它,并依靠javascript来处理一些可以在后端轻松完成的样式设置。你的javascript应该在一个外部文件中我不会写这样的代码,但我在回答OP的问题。这将是完成被问到的直接问题的最简单的方法。这绝对是聪明的,但它看起来非常粗糙,而且做得很差。他想知道他应该如何重构他的代码,我真的认为推荐这样的东西是错误的,像我最初的答案那样的东西更适合编程Golf Stack Exchange站点。我用一种与JavaScript不同的方法更新了我的答案。当我被问到这个问题时,我的心态更倾向于直接关注被问到的问题,而不是扩展和思考一个完全不同的解决方案。
<script>
    $(function () {
        @if (Model.HasRecords)
        {
            @:$("#cancel").hide();
        }
        else
        {
            @:$("#cancel").show();
        }
    });
</script>