【问题标题】:How can I get this javascript to call my C# method and pass a Parameter如何让这个 javascript 调用我的 C# 方法并传递参数
【发布时间】:2018-02-03 16:39:25
【问题描述】:

我有一个带有调用 C# 方法的按钮的 aspx 页面。按钮属性如下:

<asp:Button ID="btnSubmit" runat="server" Text="Search" OnClientClick="BuildTheYear()" />

当我单击按钮时,我运行我的 javascript,最后一步是调用 C# protected void Button1_Click(string caseNumber) 方法。

为此,我尝试使用javascript

function BuildTheYear() {
   var year = document.getElementById('cYear').value;
   if (year.length != 4) {
       alert('Please enter a 4 digit year only');
       return;
   }
   var number = document.getElementById('cNumber').value;
   var checkNumberValue = (number.charAt(0));

   if (checkNumberValue === "0") {
       alert('Please do not enter any zero (0) values before the case number!');
       return;
   }

   var SearchNumber= year + "-" + number;
   $.ajax({
       type: "POST",
       url: "Home.aspx/Button1_Click",
       data: "{s:SearchNumber}",
       contentType: "application/json; charset=utf-8",
       dataType:"json"
   })
   return;

}

我做了一些数据验证,以确保最终结果是我需要的,并且一切都适合我,我最终得到了一个名为 year 的变量,其格式为 2017-123456。我想获取这个变量并将其传递给 C# 方法,如下所示:

protected void Button1_Click(string caseNumber)
    {
        if (CheckCaseNumber(caseNumber))
        {
            Response.Redirect("~/Forms/InvWithTips2?CaseNumber=" + caseNumber, true);
        }
        else

            RadAjaxManager1.ResponseScripts.Add(string.Format("window.radalert(\"That casenumber was not found. Please enter valid case number!\")"));

    }

然后,这些方法将打开另一个 aspx Web 表单,将我的 javascript 构建的字符串作为查询字符串传递。

我正在使用 Visual Studio,当我运行应用程序并单击提交按钮时,系统提示我输入我的域凭据,但没有任何反应。我在方法上设置了一个断点,但我没有到达那里。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript c# asp.net ajax asp.net-ajax


    【解决方案1】:

    您可以删除 ajax 调用,只添加服务器端事件。服务端事件会在客户端之后调用

    <asp:Button ID="btnSubmit" runat="server" Text="Search" OnClick="Button1_Click" OnClientClick="BuildTheYear()" />
    

    此外,如果您希望出现警报错误而不触发服务器端操作。

    你应该是这样的:

    function BuildTheYear() {
       var year = document.getElementById('cYear').value;
       if (year.length != 4) {
           alert('Please enter a 4 digit year only');
           return false;
       }
       var number = document.getElementById('cNumber').value;
       var checkNumberValue = (number.charAt(0));
    
       if (checkNumberValue === "0") {
           alert('Please do not enter any zero (0) values before the case number!');
           return false;
       }
    
    
       return true;
    }
    

    代码return false; 将停止服务端操作。

    【讨论】:

      猜你喜欢
      • 2021-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多