2008-10-22 51 views
19

可以说我有型轿车的一个对象,我想呈现为HTML:有没有一种方法可以将数据绑定单个项目,例如:一个Repeater控件?

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控件不能满足我的需要,因为它似乎不支持模板风格的语法,我之后。它也需要绑定到一种DataSource对象。

我更喜欢Maxim和Torkel建议的解决方案。我会尽力为之。

回答

26

如果网页是关于一个特定项目(为例,Car.aspx?CarID = ABC123),我通常有一个名为“CurrentCar”

public Car CurrentCar { get; set; } 

页面上的公共属性,然后我可以有以下内容:

<div> 
    Wheels: <%= CurrentCar.Wheels %><br /> 
    Model: <%= CurrentCar.Model %> 
</div> 

,让你有型的安全性。只要确保在实际渲染之前分配了有效的对象。

+0

虽然你可能要检查CurrentCar被空在这里显示这个标记之前。 – rjarmstrong 2008-12-02 17:56:40

+0

除非我有理由将其暴露给其他类(当然,除了ASPX页之类的子类之外),否则我将使属性'protected'而不是'public'。 – JMD 2014-12-10 23:59:41

5

我建议你让车在页面上受保护的财产,这将让你直接访问它在aspx页面:

<div> 
    Wheels: <%= Car.Wheels %> 
    Wheels: <%= Car.Models %> 
</div> 

这种方法对单个项目的数据绑定方案为实际更好“绑定“是强类型的。

+0

车轮和车轮。 :P你在那里得到了一个错字。 – 2008-10-23 10:41:06

0

受保护属性解决方案的一个缺点是不能使用它来绑定到控件的属性。

例如,以下是行不通的:

<asp:Label ID="Label1" Text="Probably a truck" Visible='<%# CurrentCart.Wheels > 4 %>' runat="server" /> 
相关问题