【问题标题】:Is there a way to active a .cs function and a javascript function with the same button ( both onclick)?有没有办法用同一个按钮(都是 onclick)激活 .cs 函数和 javascript 函数?
【发布时间】:2019-03-25 15:47:02
【问题描述】:

问题

我想创建一个模式“忘记密码”,在这个模式中有一个“发送代码”按钮,当你点击那个按钮时,它应该激活 .cs 功能(在这个功能中它会创建一个随机代码和会将代码邮寄给用户),同时“发送代码”按钮也应该激活 javascript 功能(此功能将关闭当前模态并转到下一个模态)。

我已经尝试过的

我试过了: 要将其放入相同的 onclick 事件中, 把cs函数放在server click上,把js函数放在onclick上 尝试了一个标签按钮 和一个输入按钮

按钮

<asp:Button ID="SendCode" Text="Send code" runat="server" OnClick="VerzendCode;b();" CssClass="btn btn-default" Visible="true" />

CS功能

public partial class Site1 : System.Web.UI.MasterPage
{ protected void VerzendCode(object sender, EventArgs e)
    {
       string code = generateCode();
        MailMessage mail = new MailMessage("demert.deswert@gmail.com", TxtEmailWW.Text);
        SmtpClient client = new SmtpClient();
        client.UseDefaultCredentials = false;
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        client.Port = 587;
        client.Host = "smtp.gmail.com";
        client.EnableSsl = true;
        client.Credentials = new System.Net.NetworkCredential("demert.deswert@gmail.com", "789632145");
        mail.BodyEncoding = Encoding.UTF8;
        mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
        mail.Subject = "Wachtwoord vergeten";
        mail.Body = "Beste  dit is de code om uw wachtwoord te resetten";
        mail.Body += Environment.NewLine + code;
        client.Send(mail);  
    }
 }

JS函数

$(function b() {
    $("#BtnVerzendcode").click(function () {
        $('#WWReset').modal('show');
          $('#WWvergeten').modal('hide');
    });
});

期待

我希望这两个功能同时使用相同的按钮激活

【问题讨论】:

  • .cs 代码运行在服务器上,而 JS 代码运行在客户端。他们几乎不可能同时运行。毕竟,它们甚至不在同一个地方运行。
  • 为什么不创建一个控制器来处理发送电子邮件的事件?
  • VLAZ 除非您使用 WebForms。可以让属性 JavaScript 和 .cs 代码一样运行。我不会推荐这个。人们不再使用它是有原因的
  • 可以创建一个隐藏的asp:button,通过JS点击。例如。 $('#yourHiddenAspButton').trigger('click');
  • @Bedir 你能提供更多关于隐藏的 asp:button 的信息吗?提前致谢

标签: javascript c# html asp.net


【解决方案1】:

您可能想要使用代表异步 JavaScript 和 XML 的 AJAX。以下是您可能需要的示例:

    $(function b() {
        $("#BtnVerzendcode").click(function () {
            $('#WWReset').modal('show');
              $('#WWvergeten').modal('hide');
              var url = "@Url.Action("VerzendCode","Site1")";
              var dataToSend = { };
              $.ajax({
                  url: url,
                  type:'GET',
                  success: function(result){
                  $('#WWReset').text(result);
             }
           });
        });
    });

这将向您的控制器操作发送一个异步请求,因此 javascript 和 C# 函数将基本上同时运行。

【讨论】:

  • 感谢您的帮助,但有其他方法吗?我不是一个经验丰富的 Web 开发人员,我在使用 AJAX 时遇到了一些问题,不是它的忠实粉丝。提前致谢。
【解决方案2】:

所以重点是运行前端逻辑,然后在 JavaScript 内部调用后端逻辑。

HTML

<asp:Button ID="SendCode" runat="server" Visible="false" disabled OnClick="VerzendCode"/>
<button id="sendCodeBtn" class="btn btn-default" onclick="b();">Send Code</button>

JS/JQuery:

function b(){
    $('#sendCodeBtn').attr("disabled", "disabled");
    $('#SendCode').prop('disabled', false);
    setTimeout(function () {//timeout is to help avoid double click
        $('#SendCode').trigger('click');
    }, 500);
}

C#

protected void VerzendCode(object sender, EventArgs e)
    {
       ...
    }

【讨论】:

  • 感谢您尝试修复它,但此解决方案不会调用 C# 代码“VerzendCode”。任何想法为什么?我还假设 disabled 应该禁用 =“True”。
  • 一旦函数 b() 触发对该隐藏按钮的点击,隐藏的 asp 按钮就会调用 VerzendCode。
猜你喜欢
  • 2018-08-04
  • 1970-01-01
  • 2023-01-04
  • 1970-01-01
  • 1970-01-01
  • 2015-07-10
  • 2011-11-19
  • 2019-10-04
  • 1970-01-01
相关资源
最近更新 更多