body-onload=func在IsPost中有效,但不能!IsPost(多个实体加载正常)



我有一个用If(IsPost)和If(!IsPost)触发的脚本。当我用F11遍历代码时,一切都一样——除了最后一个显示div的javascript函数不会触发。

 // SCRIPT FOR SHOW DIV.
<script>
        function ShowFunction(divId) 
        {   
            $("#" + divId).show(600);
        }    
</script>
if (!IsPost)
        { 
            var user = WebSecurity.CurrentUserId;
            var dbCommand = "SELECT * FROM Survey WHERE survey_id = @0";
            var row = db.QuerySingle(dbCommand, user);
            if (row != null)
            {
                surv1 = row.surveyQ1;
                if (surv1 != null)
                  {
                   someOtherVariable = "Complete";
                  <body onload="$('#somediv').remove();"></body>;
                  }
            }
             if (someOtherVariable = "Complete";
               {
            <body onload="ShowFunction('Mydiv');"</body>;                
               }
       }
if (IsPost)
    { 
if (Request.Form["btnsubmit"] !=null)
        {
            var user = WebSecurity.CurrentUserId;
            var dbCommand = "SELECT * FROM Survey WHERE survey_id = @0";
            var row = db.QuerySingle(dbCommand, user);
            if (row != null)
            {
                surv1 = row.surveyQ1;
            }
        if (surv1 == "yes")
            {
            <body onload="ShowFunction('Mydiv');"></body>;
            }
        }
    }

此外,cshtml页面的结构是在!IsPost,它在IsPost之上,它在Form代码之上。另一篇帖子表明,我的脚本块中也有一个"window.onload"脚本,它可能会干扰<body onload="func">。我不知道为什么只有在不发帖的时候才会出现问题。

我找到了罪魁祸首。虽然这不在我发布的原始代码中,但实际上我在if(!ispost)中没有触发的代码的正上方还有一个主体加载的代码。if(ispost)中没有额外的身体负荷,这就是为什么帖子运行良好的原因。我已经编辑了原始代码来显示这一点。一旦我把第一个身体负荷(经过一些按摩)转移到另一个身体负荷中,效果很好。在向下移动第一个body onload之后,在代码的if(!ispost)部分中只剩下一个body onload。

<body onload="ShowFunction('Mydiv'); $('#somediv').remove();"</body>;                

我还添加了我的原始标题,这样对偶然发现它的人可能会有用。总之,当你有多个加载事件时,要小心。您可能需要将它们堆叠成一个onload,并稍微修改一下代码。

最新更新