从javascript调用csharp方法

时间:2013-07-11 03:44:01

标签: c# javascript asp.net

我正在使用javascript创建验证,以验证1到100之间的页面大小。 如果errorCtr = 0,那么在codebenhind中调用GotoPage()。先谢谢你。

<script type="text/javascript" language="javascript">
    function validatePageSize() {
        var pageSize = document.getElementById('MainContent_txtPageSize').value;
        var errorCtr = 0;
        if (pageSize == "") {
            alert('Records per page should be a valid number');
            errorCtr++;
        }
        if (pageSize < 0 || pageSize > 100) {
            alert('Records per page should be between 1 to 100');
            errorCtr++;
        }
        if (errorCtr == 0) {
            //missing code
        }
    }
</script>

代码隐藏:

void GotoPage()
{
    if (txtPageSize.Text.Trim() != "0" && txtPageSize.Text.Trim().Length > 0)
    {
        GridView1.PageSize = Convert.ToInt16(txtPageSize.Text.Trim());
        GetPOHistoryByParameterOrderByPONumber();
        btnShowAll.Visible = false;
    }
    else
    {
        GridView1.PageSize = 100;
        GetPOHistoryByParameterOrderByPONumber();
        btnShowAll.Visible = false;
        txtPageSize.Text = "100";
    } 
}

4 个答案:

答案 0 :(得分:2)

只有javascript调用才能执行此操作,如果要在服务器上运行代码,则需要回发。 Javascript代码在客户端上运行(换句话说,在浏览器中)。您的C#代码在服务器上运行。您应该在客户端javascript代码中复制C#方法正在执行的操作。

答案 1 :(得分:1)

您可以在javascript中调用服务器端功能。但是,如果你试图在该函数中操作soem服务器端控件可能无法解决。但是如果你正在尝试进行一些计算并从函数中获得返回值,那么你肯定可以实现这一点。

示例代码  Java脚本

function callServer() {
alert('<%=LoadInvoiceForJob() %>');
}

背后的代码

public string LoadInvoiceForJob()
{

    LBTest.Text = "Something";
    return "hello";

}

答案 2 :(得分:0)

试试这种方式,

WebForm2.aspx页面: -

<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" runat="server" />
<script type="text/javascript">
    function validatePageSize() {
        var pageSize = document.getElementById('MainContent_txtPageSize').value;
        var errorCtr = 0;
        if (pageSize == "") {
            alert('Records per page should be a valid number');
            errorCtr++;
        }
        if (pageSize < 0 || pageSize > 100) {
            alert('Records per page should be between 1 to 100');
            errorCtr++;
        }
        if (errorCtr == 0) {
            PageMethods.Goto();
        }
    }
</script>
<div>
    <asp:TextBox ID="MainContent_txtPageSize" runat="server"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="validatePageSize();" />
</div>
</form>

WebForm2.aspx.cs页面: -

使用System.Web.Services添加;

 [WebMethod]
    public static void Goto()
    {
        if (txtPageSize.Text.Trim() != "0" && txtPageSize.Text.Trim().Length > 0)
        {
            GridView1.PageSize = Convert.ToInt16(txtPageSize.Text.Trim());
            GetPOHistoryByParameterOrderByPONumber();
            btnShowAll.Visible = false;
        }
        else
        {
            GridView1.PageSize = 100;
            GetPOHistoryByParameterOrderByPONumber();
            btnShowAll.Visible = false;
            txtPageSize.Text = "100";
        } 
    }

答案 3 :(得分:0)

你可以使用webMethode&amp;&amp;脚本方法。 在我搜索到用户名可用性的代码中的以下代码中,在aspx文件上,我得到了这个方法的结果:
1)代码背后(c#代码):

   [System.Web.Services.WebMethod(EnableSession = true)]
    [System.Web.Script.Services.ScriptMethod()]
    public static string CheckUserName(string userName)
    {
        var sql = new SqlHelper();
        string returnValue = string.Empty;
        try
        {
            if (Regex.IsMatch(userName, @"^[A-Za-z0-9._]{1,20}$"))
            {
                returnValue = sql.GetUser(userName) != null & userName != null ? "false" : "true";
            }
            else
            {
                returnValue = "error";
            }
        }
        catch
        {
            returnValue = "false";
        }
        return returnValue;
    }

2)aspx(网页):

 <script type="text/javascript">
    function ShowAvailability() {
        window.PageMethods.CheckUserName(document.getElementById("<%=txtUserName.ClientID%>").value, OnSuccess);
    }
    function OnSuccess(response) {
        var mesg = document.getElementById("<%=lblUsername.ClientID%>");
        mesg.innerHTML = "";
        switch (response) {
            case "true":
                mesg.style.color = "green";
                mesg.innerHTML = "نام کاربری قابل استفاده می باشد";
                break;
            case "false":
                mesg.style.color = "#ec6730";
                mesg.innerHTML = "نام کاربری استفاده شده است ";
                break;
            case "error":
                mesg.style.color = "#ec6730";
                mesg.innerHTML = "نام کاربری صحیح نمی باشد";
                break;
        }
    }
    function sleep(milliSeconds) {
        var startTime = new Date().getTime(); // get the current time
        while (new Date().getTime() < startTime + milliSeconds); // hog cpu

    }
    function OnChange(txt) {
        //sleep(100);
        document.getElementById("mesg").innerHTML = "";
    }
</script>

你应该在runnat server attr的表单中使用脚本管理器,结构如下:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="True" EnablePartialRendering="true"></asp:ScriptManager>