Asp.net ASP:ListItem存储对象

Asp.net ASP:ListItem存储对象,asp.net,html,Asp.net,Html,我有一个控件,我希望将其扩展为2个值。有人能帮我做这个吗 基本上我想要 有人知道我怎样才能做到这一点吗。我考虑创建一个对象,并使用适当的.ToString()方法将其存储在值字段中,但是我只能将字符串存储在列表项中 如果我是在HTML中创建的,我可以抛出一个属性并读取它们,但是我在后面的代码中创建了我的列表项,因此我不确定如何添加属性 更新 一种方法是使用HTML5中使用的“数据”。但是,对于双向数据,需要在控件上添加附加值,以便ViewState缓存它。如果您的要求是按客户端脚本使用值属性,那

我有一个
控件,我希望将其扩展为2个值。有人能帮我做这个吗

基本上我想要

有人知道我怎样才能做到这一点吗。我考虑创建一个对象,并使用适当的.ToString()方法将其存储在值字段中,但是我只能将字符串存储在列表项中

如果我是在HTML中创建的,我可以抛出一个属性并读取它们,但是我在后面的代码中创建了我的列表项,因此我不确定如何添加属性

更新


一种方法是使用HTML5中使用的“数据”。但是,对于双向数据,需要在控件上添加附加值,以便ViewState缓存它。

如果您的要求是按客户端脚本使用
属性,那么我建议存储jsonString。这里有一个解决办法

<asp:ListItem value="{'d': ['x','b'] }" text="Hello">
绑定
列表

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        List<Product> products = new List<Product>()
        {
             new Product(){ ID=1, Name="A", Desc="A1"},
             new Product(){ ID=2, Name="B", Desc="B1"},
             new Product(){ ID=3, Name="C", Desc="C1"},
        };

        ListBox1.DataSource = products;
        ListBox1.DataTextField = "Name";
        ListBox1.DataValueField = "JsonString";
        ListBox1.DataBind();
    }
}
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!IsPostBack)
{
列表产品=新列表()
{
新产品(){ID=1,Name=“A”,Desc=“A1”},
新产品(){ID=2,Name=“B”,Desc=“B1”},
新产品(){ID=3,Name=“C”,Desc=“C1”},
};
ListBox1.DataSource=产品;
ListBox1.DataTextField=“Name”;
ListBox1.DataValueField=“JsonString”;
ListBox1.DataBind();
}
}
标记

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $("#ListBox1").change(function () {
                var sel = $(this).val();
                v = jQuery.parseJSON(sel);
                console.log(v.d[0] + " " + v.d[1]);
            });
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ListBox ID="ListBox1" runat="server"></asp:ListBox>
    </div>
</body>

$(函数(){
$(“#ListBox1”).change(函数(){
var sel=$(this.val();
v=jQuery.parseJSON(sel);
console.log(v.d[0]+“”+v.d[1]);
});
});

我认为出于您的使用原因,您只需将它们作为公共字符串变量添加到您的代码中即可。同意!我认为(添加value2属性)是不可能的。关于属性,你有一个观点
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $("#ListBox1").change(function () {
                var sel = $(this).val();
                v = jQuery.parseJSON(sel);
                console.log(v.d[0] + " " + v.d[1]);
            });
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ListBox ID="ListBox1" runat="server"></asp:ListBox>
    </div>
</body>