有没有办法在没有 eg 的情况下对单个项目进行数据绑定.a 中继器控件
本文关键字:项目 单个 数据绑定 控件 中继器 情况下 eg 有没有 | 更新日期: 2023-09-27 17:47:21
假设我有一个 Car 类型的对象,我想将其渲染为 HTML:
class Car {
public int Wheels { get; set; }
public string Model { get; set; }
}
我不想使用 ASP.NET 中继器或 ListView 控件进行绑定,因为它看起来太冗长了。我只有一个对象。但我仍然希望能够使用数据绑定语法,这样我就不必使用标签或文本。像这样:
<div>
Wheels: <%# (int)Eval("Wheels") %><br />
Model: <%# (string)Eval("Model") %>
</div>
有谁知道那里的控件可以做到这一点吗?
而且我还没有准备好切换到 ASP.NET MVC。
不幸的是,DetailsView 控件不能满足我的需求,因为它似乎不支持我所追求的模板样式语法。它也需要绑定到某种类型的数据源对象。
我更喜欢马克西姆和托克尔建议的解决方案。我会努力去做的。
如果页面是关于特定项目的(例如,Car.aspx?CarID=ABC123),我通常在页面上有一个名为"CurrentCar"的公共属性
public Car CurrentCar { get; set; }
然后我可以有以下内容:
<div>
Wheels: <%= CurrentCar.Wheels %><br />
Model: <%= CurrentCar.Model %>
</div>
这使您可以拥有类型安全性。只需确保在实际渲染之前分配了一个有效的对象即可。
我建议你在页面上将汽车作为受保护的属性,这将允许您直接在aspx页面中访问它:
<div>
Wheels: <%= Car.Wheels %>
Wheels: <%= Car.Models %>
</div>
此方法实际上更适合单项数据绑定方案,因为"绑定"是强类型的。
受保护属性解决方案的一个缺点是不能使用它绑定到控件的属性。
例如,以下方法将不起作用:
<asp:Label ID="Label1" Text="Probably a truck" Visible='<%# CurrentCart.Wheels > 4 %>' runat="server" />