从Code Behind调用javascript

时间:2010-09-16 03:27:44

标签: javascript asp.net code-behind

我已经阅读了许多不同的资源,但是如果不使用AJAX,我仍然不确定这是否可行。

我有一个javascript函数,将div加载到一个模态中并说“正在加载请等待”我将这个函数命名为loadingModal()

function loadingModal(url)
{
     loadModal(...)
}

我需要做的只是在我验证服务器端的密码和用户名是正确的后才触发这个:

btnSubmit_OnClick(object sender EventArgs e)
{
     string usr;
     string password;

     if (verify(usr, password))
     {
          ///// TRIGGER JAVASCRIPT HERE
          LOAD TONS OF SESSION VARIABLES
          .
          .
          .
      }
      else
         Show Error and Definitely Don't ever mention still loading
 }

我知道我可以将一个onclientclick调用附加到javascript但是它会加载加载模式,即使它是一个无效的用户名和密码

我可以从服务器端触发javascript mid执行吗?

3 个答案:

答案 0 :(得分:3)

  

我可以从服务器端触发JavaScript mid执行吗?

没有。在服务器端完成处理请求很久之后,在客户端(在浏览器中)评估JavaScript代码。客户端和服务器端脚本在不同的位置和不同的时间运行。不可能有那种直接的互动。

如果您不想触发整页刷新,可以使用AJAX。当您使用AJAX时,您的客户端(浏览器)将向服务器发出新的新请求。服务器处理此请求(例如,检查用户名和密码)并将响应(拒绝访问或访问权限)返回给客户端。然后由客户端来适当地处理响应。

答案 1 :(得分:1)

如果您的页面是add个javascript代码,请参阅ScriptManager.RegisterStartupScript

答案 2 :(得分:0)

希望它不会太晚......

最好的办法是添加2个asp:Panel:一个带有Ajax加载的gif,通常在页面准备好之前可见,一个带有style =“display:none”,并且在该面板中有一个asp:Label。

在代码隐藏中,当验证为false时,您只需更改要显示的样式:内联并将标签的文本设置为您需要的任何内容。当然,退出sub而不显示你的模态东西!

以下是一个例子:

<asp:Panel ID="pnlError" runat="server" style="display:none; position:absolute; left:300; top:300; width:300;">
    <asp:Label ID="lblErr" runat="server" style=" color:Red;"></asp:Label>
</asp:Panel>

If validation = false Then
        lblErr.Text = "Wrong user name or password or whatever!..."
        pnlLoading.Style.Item("display") = "none"
        pnlError.Style.Item("display") = "inline"
        Exit Sub
End if

通过这种方式,您的用户将看到加载gif,知道“某些东西”处于分离状态,如果错误,则会收到警告。