我怎样才能得到这个 javascript 来调用我的 C# 方法并传递一个参数

How can I get this javascript to call my C# method and pass a Parameter

我有一个带有调用 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 网络表单,将我 javascript 构建的字符串作为查询字符串传递。

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

如有任何帮助,我们将不胜感激。

您可以删除 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;将停止服务端操作。