根据条件从函数调用Javascript

时间:2009-07-22 00:53:20

标签: c# asp.net javascript jquery

我已经构建了一个jQuery模式系统,如果用户输入的用户名或密码无效,我想触发模式弹出。我需要从ASP中的C#代码隐藏中进行这些检查,如果有无效的用户名或密码,则触发我的javascript函数:showModal(“errorDiv”)。

这可能吗?

我不想将javascript绑定到按钮单击,而是按下按钮单击时代码块的条件。

所以基本上

btnSubmit_OnClick(sender, e)
{
   if (Username.Exists())
      //// Continue on
   else
        call showModal("errorDiv");

}

任何帮助?

4 个答案:

答案 0 :(得分:5)

查看ScriptManager.RegisterStartupScript方法,它允许您在客户端执行JavaScript,当您的异步请求以控件结束时,此方法会将您的JavaScript附加到服务器端响应:

ScriptManager.RegisterStartupScript(UpdatePanel1, GetType(), "showModalScript",
                                    "showModal('errorDiv');", true);

如果您没有使用MS Ajax UpdatePanel进行部分页面呈现,并且您的回发是正常的,请查看ClientScriptManager.RegisterClientScriptBlock

ClientScript.RegisterStartupScript(GetType(), "showModalScript",
                                   "showModal('errorDiv');", true);

答案 1 :(得分:1)

无法从Web服务器“直接”调用JavaScript函数。服务器只能生成浏览器显示的HTML响应。

Web服务器生成的HTML响应可以包括生成的JavaScript。因此,我想您可能想要做的是从btnSubmit_OnClick内部编写一些JavaScript,这将在页面加载时触发对话框。

我不太了解ASP的机制,能够帮助你,但希望能稍微清理一下。

答案 2 :(得分:0)

实现此目的的一种方法是从您的C#向您的页面发出一个javascript变量。然后设置一个javascript例程,在使用jQuery加载页面时运行,该jQuery检查该变量并调用showModal(“errorDiv”)。

答案 3 :(得分:0)

我不确定你要在这里完成什么。它看起来像你试图从JavaScript中调用ASP函数。问题是你的ASP在服务器上运行,而javascrpt在客户端上运行。

您需要创建一个返回身份验证结果的ASP页面。然后你使用类似的东西来评估它:

.get('/urlto/authpage.asp', function(data) { 
    if (data='Authorized') { 
        do something;
    }
    else {
        showModal('errorDiv');
    }

在这种情况下,我假设您的ASP'页面'只是在授权时返回“授权”。

.get()使用引号中的URL调用远程服务器。第二个参数是在返回结果时调用的函数。该函数的第一个参数是该Web请求的文本。

有关.get()的更多信息:http://docs.jquery.com/Ajax/jQuery.get#urldatacallbacktype

希望我能正确阅读你的问题。