2013-03-07 49 views
0

仅当JavaScript中的验证为真时,我才想从JavaScript后面的代码中调用C#代码。我遇到了一些问题,有人可以帮忙。由于 这里是我的JavaScript如何从JavaScript调用C#代码

<script type="text/javascript"> 
     function Validate_Checkbox() { 
      var chks = $("#<%= cblCustomerList.ClientID %> input:checkbox"); 

      var hasChecked = false; 
      for (var i = 0; i < chks.length; i++) { 
       if (chks[i].checked) { 
        hasChecked = true; 
       //call C# code 
        break; 
       } 
      } 
      if (hasChecked == false) { 
       alert("Please select at least one checkbox..!"); 

       return false; 
      } 

      return true; 
     }  
    </script> 

这里是我想打电话给

protected void DV_Test_ItemInserting(object sender, DetailsViewInsertEventArgs e) 
    { 
     do something 
    } 

这里的C#代码是调用JavaScript

<asp:Button ID="Button1" runat="server" CausesValidation="True" 
          CommandName="Insert" Text="Insert" OnClientClick="javascript:Validate_Checkbox();return true;"/> 
+0

您可以添加隐藏按钮并绑定一些您想要在'C#'代码中执行的动作。从'javascript'验证后点击此按钮。它会导致回发。 – ChruS 2013-03-07 16:10:21

+0

你可以在http://michbex.com/wordpress/?p=66 – user1929959 2013-03-07 16:14:20

+0

找到答案我看过所有这些建议,但似乎没有发现更容易的东西,所以我可以按照它。我的经验是JavaScript和C#是有限的。我会尝试挖掘一些更多的信息。 – moe 2013-03-07 16:30:09

回答

0

我们可以使用Ajax调用数据类型

1)JSON,在这种情况下,你会在代码中创建Web方法落后,并返回字符串以JavaScript作为返回结果

2)HTML,在这种情况下,你会打电话给新的HTML页面,并返回HTML

0

我认为你应该与客户端事件的组合使用服务器端事件(点击)。在服务器端:

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> 

,并在后面

protected void Button1_Click(object sender, EventArgs e) 
{ 
    //do something here 
} 

此外,在你的JavaScript代码的代码,你应该使用event.preventDefault()如果某些条件不能得到满足。详情请查询Mozilla docs。您的客户端上的示例代码可能看起来像(未测试!):

$(document).ready(function(){ 
    $('#Button1').click(function(e){ 
    //some logic to check checkbox status and call e.preventDefault(); 
    }); 
}); 
+0

我想确保Button1_Click只在验证为真时触发。我不确定把它放在我的javascript中。我的编码经验是非常有限的,所以请帮助,如果你能 – moe 2013-03-07 16:28:21

+0

我已经尝试过,但它不适用于我可以请提供一个工作的例子吗?谢谢 – moe 2013-03-07 21:18:03

0

您需要使用Eval。例如:

<script type="text/javascript"> 
    function Validate_Checkbox() { 
     ... 
     if (chks[i].checked) { 
      hasChecked = true; 
      eval("<%= Page.ClientScript.GetPostBackEventReference(lbSubmit, String.Empty) %>"); 
     } 
     ... 
    } 

<asp:Button ID="Button1" CausesValidation="True" CommandName="Insert" Text="Insert" OnClientClick="javascript:Validate_Checkbox();return true;" runat="server"/> 

<asp:LinkButton ID="lbSubmit" style="display:none" OnClick="slbCheckVin_Click" runat="server"/>