为什么我的后端C#代码在不应该执行的时候被执行?

时间:2014-10-07 23:16:17

标签: javascript c#

天才,

我在我的前端代码中有这个Javascript函数,我正在尝试推动更多客户端验证步骤,以便通过后端从过多的验证工作中解除。这是Javascript函数:

<script type = "text/javascript" >
    function watchdelete() {
        var manufacturer = document.getElementById('<%:drpManufacturer.ClientID%>');
        var model = document.getElementById('<%:drpModel.ClientID%>');
        var strManufacturer = manufacturer.options[manufacturer.selectedIndex].value;
        var strModel = model.options[model.selectedItem];
        if (strManufacturer)   // If there is a selected Manufacturer
        {
            if (confirm("Are you Sure you want to delete this Dimension Detail?"))
            {
                if (strModel) return true;
                else
                {
                    alert("Please select a car model first.");
                    return false;
                }
            }
        }
        else
        {
            alert("Please select a Manufacturer first before deleting");
            return false;
        }
    }
</script>
<asp:ScriptManager ID="scripman1" runat="server" EnablePageMethods="True">
</asp:ScriptManager>

这是有问题的删除按钮代码,OnclientClick指向Javascript函数,Onclick指向后端函数:

<asp:Button ID="btnDimensionDel" runat="server" Text="Delete" OnClientClick = "watchdelete();" OnClick="btnDimensionDel_Click" />

我注意到我的后端C#代码在不应该被调用时被调用。我有什么办法可以改变这个吗?我在这里做错了什么?

2 个答案:

答案 0 :(得分:-1)

确保在OnclientClick函数之前插入关键字return,并从Javascript函数返回false,以便不会调用C#后端。

答案 1 :(得分:-1)

在按钮的事件中,您正在调用js方法,没有别的。因此,在执行指定的方法后,浏览器将执行按钮的默认行为。如果你想避免这种情况,你必须使用它:OnClientClick = "watchdelete(); return false;"但是,因为你的方法正在返回处理情况的东西,所以你可以简单地返回你的方法的返回值:

<asp:Button ID="btnDimensionDel" runat="server" Text="Delete" OnClientClick = "return watchdelete();" OnClick="btnDimensionDel_Click" />