来自javascript的Asp.net代码隐藏?

时间:2011-05-26 09:18:41

标签: javascript asp.net

是否可以在vs2008中从javascript调用asp.net代码隐藏函数?
我的问题是,我有两个代码隐藏方法,一个用于某些验证,它将返回true或false。 当用户单击“提交”按钮并且返回值为true时,将调用此方法, 我想调用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确认框 出来了。

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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')" .. /> 

答案 2 :(得分:0)

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

此致 S Mukherjee。