7

在加载页面时,我想将一个值从服务器端变量传递给我的 javascript 函数。

我似乎无法让它工作,这就是我所拥有的:

网络

protected void Page_Load(object sender, EventArgs e)
{
    string blah="ER432";
}

Javascript

<script type="text/javascript">

    var JavascriptBlah = '<%=blah%>';

    initObject.backg.product_line = JavascriptBlah;

</script>

将此添加到页面

 public string blah { get; set; }


        protected void Page_Load(object sender, EventArgs e)
        {
           blah="ER432";
        }

我仍然收到错误消息:CS0103:当前上下文中不存在名称“blah”

我也想尝试在不使用 hdden 字段的情况下完成此操作

4

6 回答 6

12

我相信你的 C# 变量必须是一个类成员才能做到这一点。尝试在类级别声明它而不是Page_Load(). 一旦 page_load 完成,它显然会失去作用域。

public partial class Example : System.Web.UI.Page
{
    protected string blah;

    protected void Page_Load(object sender, EventArgs e)
    {
        blah = "ER432";
        //....
于 2012-06-13T18:29:35.700 回答
3

在这种特殊情况下,对于您来说blah是本地的,Page_Load您必须将其设为类级别成员(可能将其设为属性)才能像这样公开。

于 2012-06-13T18:29:49.693 回答
2

您可以在您的 html 页面中放置一个隐藏的输入:

<input  type="hidden" runat='server' id="param1" value="" />

然后在后面的代码中将其设置为您想要传递给 .js 函数的内容:

param1.value = "myparamvalue"

最后你的javascript函数可以访问如下:

document.getElementById("param1").value
于 2012-06-13T18:35:47.957 回答
0

您应该blah在类级别声明。

于 2012-06-13T18:29:58.987 回答
0

string blah需要成为Page类的公共属性,而不是Page_Load. 您需要了解范围界定。

public class MyPage
{
    public string blah { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
        blah = "ER432";
    }
}
于 2012-06-13T18:30:21.597 回答
0

我过去所做的是 webforms 的功能——创建一个隐藏字段来存储客户端所需的值。如果您使用的是 4.0,您可以将隐藏字段客户端 ID 模式设置为静态,以帮助保持清洁。基本上,将您的值添加到隐藏字段,然后您可以从 javascript 获取该值或修改它(如果您想将其传回),因为它只是一个 dom 元素。

如果你真的想使用代码——比如一个变量,它需要在类范围内是可访问的。

于 2012-06-13T18:31:04.007 回答