Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中访问C#变量_C#_Asp.net_Javascript - Fatal编程技术网

在javascript中访问C#变量

在javascript中访问C#变量,c#,asp.net,javascript,C#,Asp.net,Javascript,我将在C#NET中为DMS(教育领域)设计一个网站,这是我的新手 在我的一个ASPX页面中,我想根据accessright禁用一个JavaScript菜单 accessright作为SQL server中的一个属性存储在数据库表login中,我希望将该accessright检索到一个C#变量,并希望在JavaScript中访问该变量 如果有其他可能的方法,请告诉。您不能访问客户端代码中的服务器端变量。唯一的方法是使用AJAX库或将变量作为客户端脚本注入页面 将变量的值注入页面,如下所示: str

我将在C#NET中为DMS(教育领域)设计一个网站,这是我的新手

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

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


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

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

将变量的值注入页面,如下所示:

string script = string.Format("var myVariable = '{0}';", vaiable.ToString());
if (!ClientScript.IsClientScriptBlockRegistered("myScript"))
{
    ClientScript.RegisterClientScriptBlock(typeof(_Default), "myScript", script, true);
}
在javascript函数中,使用myVariable作为服务器端变量

    <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>

但我觉得你们应该从概念开始。

这是我在谷歌上快速搜索到的示例代码。它应该为你指明正确的方向。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>

功能按钮\u单击()
{
警报(document.getElementById('hd').value);
}

在ASP时代,我们使用了一种快捷方式,这种方式在ASP.NET中仍然有效
在codebehind页面中声明一个公共属性,比如说
public int MyInteger

在aspx中放入此

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

函数GetMyValue()
{
var someVar=;
//做点什么
}

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

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


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

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

function GetMyValue(){      
    eval("var someVar = " + parseInt<%=this.MyInteger%>"));
    //Do something     
} 
函数GetMyValue(){
eval(“var someVar=“+parseInt”);
//做点什么
} 
使用它并享受它。
;)

我更喜欢这个,而不是猩红花园的解决方案。为什么?用你的解决方案,如果你想改变什么,你不需要重建!这根本不是真的!有没有想过?为什么不是真的?我每天都用它,这没什么错。这是一种垃圾代码。我不喜欢。这看起来很有希望,但可能比n海报需要或关心实现。:\n我要指出的是,基于用户访问权限的隐藏不应该在JavaScript中完成(除非它是真正不敏感的事情)。如果我真的不应该看到它,我可以打开我的开发人员工具控制台,尝试
iCanHazAccess=true;
并弹出您的菜单。如果您也在为这个服务器端提供服务,那就好了