【问题标题】:Asp.net codebehind from javascript?来自javascript的Asp.net代码隐藏?
【发布时间】:2011-05-26 09:18:41
【问题描述】:

在vs2008中是否可以从javascript调用asp.net codebehind函数?
我的问题是,我有两种代码隐藏方法,一种用于验证,它会返回真或假。 当用户点击提交按钮并且返回值为真时,该方法将被调用, 我想调用 javascript 函数进行确认(确认对话框),如果可以,
我会调用 另一种用于更新的代码隐藏方法。如果验证方法返回 false 或 javascript 取消, 没有什么变化。 现在,我的代码是这样的:

<script language="javascript" type="text/javascript">
function Confirm()
{
    var checkUpdate = confirm("Do you wish to save changes?");
    if (checkUpdate)
    {
        return true;
    }
    else 
    {
        return false;
    }
}

protected void Button1_Click(object sender, EventArgs e)
{
    if(CheckValidate())
    {
        string script = "<SCRIPT LANGUAGE='JavaScript'> ";
                    script += "Confirm()";
                    script += "</SCRIPT>";
                    Page.RegisterStartupScript("ClientScript", script);

        //If Javascript Ok Call Update,Otherewise,nothing;  
    }
}

private boolean CheckValidate()
{
    return boolean;
}

private void UpdateData()
{
    //Update;   

 }

但是,它会立即更新方法,更新后,javascript 确认框 出来了。

我如何改变以获得正确的顺序?请给我正确的方法。

【问题讨论】:

    标签: javascript asp.net


    【解决方案1】:

    是的,通过使用PageMethods,您可以从 javascript 调用代码隐藏方法。

    查看此链接以获取有关页面方法的更多详细信息:http://aspalliance.com/1922_PageMethods_In_ASPNET_AJAX

    【讨论】:

    • 如果可能的话,我只想使用 asp.net 和 javascript,而不是 ajax。谢谢。
    【解决方案2】:

    要在客户端事件上调用服务器端方法,您需要执行以下操作:

    1- 创建服务器端方法:

    void DoSomething(...) { ... }
    

    2- 实现System.Web.UI.IPostBackEventHandler.RaisePostBackEvent,它采用一个字符串参数(您可以将名称分配给该参数的值)。:

    public void RaisePostBackEvent(string eventArgument) 
    {
            DoSomething(...);
    }
    

    3- 编写一个脚本来触发回发:

    function TriggerPostBack(control, arg){
        __doPostBack(control, arg);
    }
    

    4- 需要时调用 PostBack 触发函数:

    <a .... onclick="TriggerPostBack('control', 'arg')" .. /> 
    

    【讨论】:

      【解决方案3】:

      在你的情况下,你为什么不使用按钮的 OnClientClick 函数来调用你的javascript函数?

      问候, S Mukherjee。

      【讨论】:

      • 如果我使用onclientclick,javascript函数将首先被调用,然后验证和更新。我的顺序是 (i)Validation(codebehind)(ii)Confirm(javascript)(iii)Update(codebehind)。谢谢。
      猜你喜欢
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-11
      相关资源
      最近更新 更多