将 C# 值传递给 Javascript

Pass C# Values To Javascript

本文关键字:Javascript 值传      更新时间:2023-09-26

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

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

Asp.Net

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

爪哇语

<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字段的情况下完成此操作

我相信

您的 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";
        //....

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

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

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

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

param1.value = "myparamvalue"

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

document.getElementById("param1").value

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

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

您的string blah必须是Page类的公共属性,而不是Page_Load中的局部变量。 您需要了解范围。

public class MyPage
{
    public string blah { get; set; }
    protected void Page_Load(object sender, EventArgs e)
    {
        blah = "ER432";
    }
}

你应该在类级别声明blah