【问题标题】:ASP.NET Calling Server Side Method from Client Side on keypressASP.NET 在按键上从客户端调用服务器端方法
【发布时间】:2017-12-17 16:50:37
【问题描述】:

简单地说,我需要一种客户端代码能够在我的项目中触发服务器端方法的方法。我尝试使用此类功能的方式是,当用户将他们的电子邮件地址输入文本框时,在键入每个字符后,我希望项目触发下面显示的方法,该方法使用类来查询我的数据库。

private void EmailCheck()
{
    lblEmailError.Text = null;
    Customer y = new Customer();

    int counter = 0;
    y.Email = Email.Text;

    counter = y.CheckEmail();
    if (counter.Equals(1))
    {
        lblEmailError.Text = "Email is already in use";
    }
    else
    {
        lblEmailError.Text = null;
    }
}

我目前几乎没有任何 JavaScript 或任何形式的客户端脚本方面的经验。据我了解,AJAX 在这里可能对我有用,但我再次对如何实现它一无所知。我也听说过 onkeydown/press/up,但我再次不确定如何根据我的特定需求更改在线解决方案。有什么帮助吗?

【问题讨论】:

    标签: javascript c# asp.net client-server


    【解决方案1】:

    最直接的方法是在 HTML5 中制作一个按钮,使用 jQuery $.ajax() 函数调用服务器端 REST API(实现可以是任何 C# Web API、Python Flask API、Node.JS API)。

    在您的客户端:

    <label> Enter something into the textbox </label> 
    <input type = "text" id = "myTextBox" placeholder="Enter something"/>
    
    
    <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js"></script>
    
    <script>
    $(function(){
    
    //On button click query the server
    
    $("#myTextBox").change(function(){
    var textBoxValue = $("#myTextBox).val();
    var dataToBeSent = {
     "data": textBoxValue
    }; 
    
    $.ajax(function(){
    url: "http://localhost:9999/api/YourAPIName",
    method: "POST",
    data: JSON.stringify(dataToBeSent),
    success: function(data){
       console.log(data);
    },
    error: function(jqXHR, textStatus, errorThrown){
       console.log("Failed because" + errorThrown);
    }
    }); //end .ajax
    
    }); //end click
    
    }); //end jQuery
    </script>
    

    在您的服务器端(假设 C#):

    创建一个模型类,其属性与您为 [FromBody] 属性构建的 JSON 键同名,以正确反序列化它。

    public class SomeModelClass
    {
       public string data { get; set; }
    }
    
    [HttpPost]
    [Route("api/YourAPIName")]
    public HttpResponseMessage YourMethod([FromBody] SomeModelClass modelClass)
    {
        //perform logic and return a HTTP response
    }
    

    【讨论】:

    • 谢谢你,但是当一个字符输入到文本框时,我将如何编辑这段代码使其调用方法
    • 您在使用 ASP.NET MVC 应用程序吗?
    • 不,我创建了一个空的 Web 应用程序
    • @N.Ali 检查我的更新答案,使用 jQuery 和 Web API 将文本框值发送到服务器端。
    • 但是你仍然需要按下按钮来调用该方法。我希望每次有人在文本框中输入字符时执行该方法。
    猜你喜欢
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多