如何从C#传递变量到JavaScript?

20

希望能够从c#传递变量到javascript,以便使用一些jquery代码。需要传递double、int、string和array类型的变量,请问有谁知道如何做到这点?

例如,在c#中我有以下代码片段:

string blah = "this is a blah string";

我想把这个内容传递给JavaScript,以便在jQuery中使用mouseover事件:

$('#myDiv').mouseover(function(){ //do something with my 'blah' string });
4个回答

16

算了,我想我已经搞懂了。假设上面的代码,你可以用JavaScript编写:

<script type="text/javascript"> var JavascriptBlah = '<%=blah%>'</script>

这将把C#中的blah传递给客户端上的JavascriptBlah,然后您可以在客户端上进行操作。


2
这样做的缺点是,如果“blah”中有单引号,你就会遇到麻烦。在传递之前,将字符串转换为JSON是有意义的。 - Dave Markle
有人知道如果使用"<%=VariableName%>",当变量"blah"被赋值为"private async Task Foo()"时是否有效吗?我将其分配在一个私有的异步任务中,我想知道这是否是它对我不起作用的原因。 - Eric Milliot-Martinez

4
你可以在代码后端以及session中使用公共属性。以下是一个使用公共属性的示例,可以从Javascript函数中读取。
前端代码如下:
function IsAgentInProgram()
{
    var optStatus = "<%=AgentOptInStatus%>";

    if (optStatus == "True")
        alert("You are opted in!");
    else
        alert ("You are opted OUT");
}

后台代码:

public bool AgentOptInStatus;

private void Page_Load(object sender, System.EventArgs e)
{
    this.AgentOptInStatus = true;

}

2

不确定你的意思,但你可以看上面编辑过的部分。 - locoboy
1
警告:自Framework v.4.0起,Page.RegisterClientScriptBlock已过时。现在建议使用ClientScriptManager.RegisterClientScriptBlock方法。 - Alberto De Caro

1

您可以使用asp:HiddenField变量在代码后端和js之间传递值。这是通过页面的视图状态在postbacks期间实现的...


这个链接有一个示例代码,通过这种方式你可以在后台代码或JavaScript中访问隐藏字段的值。 - dankyy1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接