如果MVC模型为空,则有条件地执行javascript

如果MVC模型为空,则有条件地执行javascript,javascript,jquery,ajax,asp.net-mvc,asp.net-mvc-4,Javascript,Jquery,Ajax,Asp.net Mvc,Asp.net Mvc 4,我试图在单击引导面板标题时执行一篇ajax文章。这篇文章正在填充我的视图模型。我只希望当Model.OrdersInEvaluation为null时发生此事件,这样它就不会在每次单击标题时都进行发布。因此,我尝试将razor和javascript结合起来: <script> @if (Model.OrdersInEvaluation == null) { <Text> $("#evaluation-panel-heading").click(functio

我试图在单击引导面板标题时执行一篇ajax文章。这篇文章正在填充我的视图模型。我只希望当Model.OrdersInEvaluation为null时发生此事件,这样它就不会在每次单击标题时都进行发布。因此,我尝试将razor和javascript结合起来:

<script>
@if (Model.OrdersInEvaluation == null)
{
    <Text>
    $("#evaluation-panel-heading").click(function() {
        $.ajax({
            url: '@Url.Action("EvaluationOrders", "Home")',
            type: 'POST',
            success: function(data) {
                if (data) {
                    $("#evaluation-panel-body").html(data);
                }
            }
        });
    });
</Text>
}
</script>

我知道Model.OrdersInEvaluation正在填充,因为在ajax调用中,我视图中的表正在填充Model.OrdersInEvaluation。我用错了吗?或者代码中是否存在另一个错误,导致每次单击时都执行此操作?

我目前没有办法测试此操作,但我认为:

@if (Model.OrdersInEvaluation == null)
此部分在服务器端运行,仅在首次加载页面时呈现。它不会随着ajax调用而更新


也许你可以检查$evaluation面板主体,看看它是否为空,以防对你有用

在元素中添加一个数据属性,指示值if null是否存在,比如data exists=@Model.OrdersInEvaluation,然后在脚本中使用if$this.data'exists'{return;}$.ajax。。。因此,如果属性存在,就永远不会进行ajax调用。您的语法没有问题。如果视图中存在评估面板标题元素,则应触发单击事件。你确定吗?我确定模型正在填充吗?它正在开火,但问题是它每次都在开火。即使在填充了模型之后,您是否可以发布这两种情况下生成的html?在前面的问题中,您注意到您有多个面板。如果这里仍然是这种情况,那么如果为所有元素指定相同的id=评估面板标题和id=评估面板主体属性,则可能会出现问题