1

我想使用在 c# 类中创建的对象javascript。我知道我可以使用 json 库将我的服务器端对象转换为JSON对象,以便可以在javascript.

我已经Newtonsoft.Json为此下载了库。我有以下aspx.cs页面代码

using Newtonsoft.Json;


public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        product p = new product();
        p.ProductId = 1;
        p.productName = "t-shirt";

    }

    public class product
    {
        public int ProductId { get; set; }
        public string productName { get; set; }
    }
}

对于aspx页面,我使用以下代码javascript访问该 p 对象值。

    <%@ Import Namespace="Newtonsoft.Json" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript">

var jsobject = <%= JsonConvert.SerializeObject(p) %>;

function myfunction (){ 
  //work with object
  alert('Hi');
}

</script>
</asp:Content>

当我尝试构建它时,它会生成以下异常

The name 'p' does not exist in the current context

我只想在我的 javascript 代码中使用 p id 和 name。

我最初参考了这个答案

4

2 回答 2

2

您的变量 p 的范围不正确。

public partial class _Default : System.Web.UI.Page
{
    public product p;

    protected void Page_Load(object sender, EventArgs e)
    {
        p = new product();
        p.ProductId = 1;
        p.productName = "t-shirt";

    }

    public class product
    {
        public int ProductId { get; set; }
        public string productName { get; set; }
    }
}
于 2013-05-22T06:57:51.967 回答
1

您不能访问在 scriptlet 中定义公共属性或数据成员的函数的局部变量。

public product p {get; set;}
protected void Page_Load(object sender, EventArgs e)
{    
    p = new product()
    p.ProductId = 1;
    p.productName = "t-shirt";
}
于 2013-05-22T06:58:03.783 回答