在javascript中使用c#类对象

本文关键字:对象 javascript | 更新日期: 2023-09-27 18:14:51

我想使用一个在javascript的c#类中创建的对象。我知道我可以使用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和名称。

我从这个答案中得到了最初的参考

在javascript中使用c#类对象

变量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; }
    }
}

在scriptlet中不能访问函数的局部变量。

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