19

HTMLとしてレンダリングしたいタイプCarの単一のオブジェクトがあるとしましょう。

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

ASP.NETリピーターまたはListViewコントロールを使用してバインドするのは、冗長すぎるように思われるため、使用したくありません。私はただ1つのオブジェクトを持っています。ただし、データバインディング構文を使用できるようにしたいので、ラベルやリテラルを使用する必要はありません。何かのようなもの:

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

誰かがまさにそれを行うコントロールについて知っていますか?

そして、私はまだASP.NETMVCに切り替える準備ができていません。


残念ながら、DetailsViewコントロールは、私が求めているテンプレートスタイルの構文をサポートしていないように見えるため、私のニーズを満たしていません。また、ある種のDataSourceオブジェクトにバインドする必要があります。

MaximとTorkelが提案したソリューションの方が好きでした。私はそのために行こうとします。

4

3 に答える 3

26

ページが特定のアイテムに関するものである場合(たとえば、Car.aspx?CarID = ABC123)、通常、「CurrentCar」というページにパブリックプロパティがあります。

public Car CurrentCar { get; set; }

そして、私は次のことをすることができます:

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

それはあなたが型安全性を持つことを可能にします。実際のレンダリングの前に、有効なオブジェクトが割り当てられていることを確認してください。

于 2008-10-22T11:09:48.563 に答える
5

ページで車を保護されたプロパティにすることをお勧めします。これにより、aspx ページで直接アクセスできるようになります。

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

このアプローチは、「バインディング」が厳密に型指定されているため、実際には単一項目のデータ バインディング シナリオに適しています。

于 2008-10-22T11:16:24.790 に答える
0

保護されたプロパティソリューションの欠点の1つは、コントロールのプロパティにバインドするためにそれを使用できないことです。

たとえば、次の機能は機能しません。

<asp:Label ID="Label1" Text="Probably a truck" Visible='<%# CurrentCart.Wheels > 4 %>' runat="server" />
于 2008-10-22T11:44:06.620 に答える