【问题标题】:Calling javascript from Codebehind从 Codebehind 调用 javascript
【发布时间】:2011-09-21 22:08:27
【问题描述】:

我已经阅读了许多不同的资源,但我仍然不确定不使用 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 中间执行吗?

【问题讨论】:

    标签: javascript asp.net code-behind


    【解决方案1】:

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

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

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

    【讨论】:

    • 我就是这么想的,谢谢你简洁直接的回答。
    【解决方案2】:

    如果你的意思是add页面的javascript代码,请参阅ScriptManager.RegisterStartupScript

    【讨论】:

      【解决方案3】:

      希望还不算太晚……

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

      在代码隐藏中,当验证为假时,您只需将样式更改为 display:inline 并将标签的文本设置为您需要的任何内容。当然,在不显示模态的情况下退出 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,知道“某事”正在准备中,如果错误,他会收到警告。

      【讨论】:

        猜你喜欢
        • 2011-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-23
        • 2012-09-12
        • 2021-01-19
        • 1970-01-01
        相关资源
        最近更新 更多