【问题标题】:Accessing C# variable in javascript在 javascript 中访问 C# 变量
【发布时间】:2009-03-20 12:48:51
【问题描述】:

我打算用 C#.NET 为 DMS(教育领域)设计一个网站,我是新手。

根据accessright,在我的一个 ASPX 页面中,我想禁用 JavaScript 中的菜单。

accessright 存储在数据库表 login 中作为 SQL 服务器中的一个属性,我想将该 accessright 检索到一个 C# 变量并希望在 JavaScript 中访问该变量。

如果有其他可能的方法请告诉。

【问题讨论】:

  • 我会注意到,不应该在 JavaScript 中隐藏基于用户访问权限的内容(除非它真的不敏感)。如果我真的不应该看到它,我可以打开我的开发者工具控制台并尝试iCanHazAccess = true;,然后弹出你的菜单。如果你也在为这个服务器端提供服务,那很好

标签: c# asp.net javascript


【解决方案1】:

在 ASP 时代,我们曾经使用过一种快捷方式,它在 ASP.NET 中仍然有效
在页面代码隐藏声明一个公共属性说public int MyInteger
在aspx中放这个

<script>
    function GetMyValue()
    {
     var someVar = <%=this.MyInteger%>;
     //Do something
    }
</script>

【讨论】:

  • 比起 Scarlet Garden 的解决方案,我更喜欢这个。为什么?使用您的解决方案,如果您想更改某些内容,则无需重新构建!
【解决方案2】:

我在将服务器 silde 变量传递给 Javascript 变量的问题中发现了这一点。最好的方法是使用eval() javascript 方法:

function GetMyValue(){      
    eval("var someVar = " + parseInt<%=this.MyInteger%>"));
    //Do something     
} 

使用它并享受它。 ;)

【讨论】:

    【解决方案3】:

    这是我快速搜索的示例代码。 http://www.eggheadcafe.com/community/aspnet/7/63763/using-c-variable-in-java.aspx 它应该为您指明正确的方向。 strvariable 是您的 C# 变量。

        <INPUT id="hd" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 144px" type="hidden"  value="<%=strvariable %>">
    
    <script language="javascript">
    function Button_Click()
    {
        alert(document.getElementById('hd').value); 
    }
    </script>
    

    【讨论】:

      【解决方案4】:

      您不能在客户端代码中访问服务器端变量。唯一的方法是使用 AJAX 库或将变量作为客户端脚本注入页面。

      将变量的值注入这样的页面:

      string script = string.Format("var myVariable = '{0}';", vaiable.ToString());
      if (!ClientScript.IsClientScriptBlockRegistered("myScript"))
      {
          ClientScript.RegisterClientScriptBlock(typeof(_Default), "myScript", script, true);
      }
      

      并在您的 javascript 函数中使用 myVariable 作为您的服务器端变量。

      但我认为你应该从 Client Side or Server Side 概念开始。

      【讨论】:

      • 这根本不是真的!有没有想过 ??
      • 为什么不是真的?我每天都用它,这没什么问题。 方式是某种意大利面条式的代码。我不喜欢它。
      【解决方案5】:

      在我们的代码库中,我们实现了一种称为RemoteInvoke 的技术,通过该技术,javascript 可以调用服务器上的方法而无需回发。实际上,它是在服务器端使用动态绑定的名称调用。

      方法的名称及其 javascript 参数被捆绑并传递给服务器,服务器展开它们并找到最匹配的方法来调用。规则是您只能调用具有 RemoteInvokable 属性的方法,并且允许的数据类型是数字、字符串和布尔值。处理调用委托的代码将在可能的情况下进行近似匹配的签名匹配(即,如果您将浮点数作为 arg 传递,它将支持具有该名称和签名的方法,但如果没有,它将找到一个具有匹配的整数参数。

      可以通过RemoteInvoke实现访问服务器端变量。

      【讨论】:

      • 这看起来很有希望,但可能超出了发布者需要或关心的范围。 :\
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 2015-09-08
      • 2013-09-17
      相关资源
      最近更新 更多