【问题标题】:Calling C# code from javascript [duplicate]从javascript调用C#代码[重复]
【发布时间】:2013-12-13 15:33:04
【问题描述】:

真的必须有比我在网上找到的更好的方法来做到这一点。

<script type="text/javascript">
    function Sub()
        {
            if (document.getElementById("DatePicker1").Text == "")
                alert("Select a date");
            else
                Submit(); //this is the c# function
        }
</script>

<asp:Button ID="Button1" runat="server" OnClientClick="Sub()" PostBackUrl="~/Default.aspx" Text="Submit" />

为什么如果我将其更改为 OnClick = "Submit" 我可以这样做,但在客户端验证后尝试这样做太难了!非常令人沮丧。我是一个非常有经验的程序员,但对网络相关的东西很陌生,所以当客户端与服务器的废话一直在妨碍我时。
请让我知道任何好的解决方案。我宁愿不使用 jQuery,因为我想稍后单独研究它。谢谢你。

【问题讨论】:

  • 如果您正在编写一个基于 Web(因此也基于浏览器)的 Web 应用程序,那么您将不得不处理前端 ui——这意味着 javascript。我认为你应该咬紧牙关学习它。有经验的程序员使用 jquery 或原生 javascript 做一些验证应该没有问题。
  • 哇,你在这里真的很脾气暴躁,如果你坚持下去,可能会在 SO 上得到更少的结果......我知道我要继续前进。
  • 是的,你会考虑使用那个粗俗的词或替代词的事实在这里是完全不合适的。请记住,在 SO 上帮助你的每个人都是 100% 出于善意——你没有付钱给他们,他们不为你工作,等等。除了 100% 的尊重之外,以任何方式对待他们……好吧我会让你填写一个你经常使用的词。

标签: c# javascript asp.net


【解决方案1】:

您实际上不需要从您的 Javascript 中调用 Web 方法。您可以尝试以下方法:

OnClickOnClientClick 与您的按钮。在OnClientClickreturn Sub()

<asp:Button ID="Button1" runat="server" OnClientClick="return Sub()" 
      OnClick="Button1_Click"  PostBackUrl="~/Default.aspx" Text="Submit" />

Button1_Click事件中你可以调用你的方法Submit

在您的 Javascript 中,根据验证返回 true 或 false。

<script type="text/javascript">
    function Sub()
    {
        if (document.getElementById("DatePicker1").Text == "")
        {
            alert("Select a date");
            return false;
        }
        else
        {
            return true;
        }
    }
</script>

这将防止OnClick 事件在验证失败的情况下被触发。

【讨论】:

    【解决方案2】:

    OnClick 将在服务器端工作,OnClientClick 将在控制权传递给服务器之前在客户端执行。

    如果客户端代码返回 TRUE,那么它将转到服务器。如果用于验证返回false,则不会去服务端。

    【讨论】:

      猜你喜欢
      • 2013-12-07
      • 2011-01-24
      • 1970-01-01
      • 2015-08-11
      • 2014-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多