如何让这个javascript调用我的C#方法并传递参数

时间:2017-08-25 15:19:26

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

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

<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,当我运行应用程序并单击提交按钮时,系统会提示我输入我的域凭据。我已经在方法上设置了一个断点,但我没有到达那里。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

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