簡體   English   中英

有沒有一種方法可以在沒有eg的情況下綁定單個項目。 中繼器控制?

[英]Is there a way to data bind a single item without eg. a Repeater control?

假設我有一個類型為Car的對象,我想將其呈現為HTML:

class Car {
  public int Wheels { get; set; }
  public string Model { get; set; }
}

我不想使用ASP.NET Repeater或ListView控件進行綁定,因為它看起來太冗長了。 我只有一個對象。 但我仍然希望能夠使用數據綁定語法,因此我不必使用標簽或文字。 就像是:

<div>
  Wheels: <%# (int)Eval("Wheels") %><br />
  Model: <%# (string)Eval("Model") %>
</div>

有沒有人知道那里的控制權呢?

我還沒准備好切換到ASP.NET MVC。


不幸的是,DetailsView控件不能滿足我的需求,因為它似乎不支持我所追求的模板式語法。 它也需要綁定到某種類型的DataSource對象。

我更喜歡Maxim和Torkel建議的解決方案。 我會盡力去做。

如果頁面是關於特定項目(例如,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" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM