Есть ли способ привязки данных к одному элементу без, например. Повторитель управления? - PullRequest
19 голосов
/ 22 октября 2008

Допустим, у меня есть один объект типа 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 вида.

Мне больше понравилось решение, предложенное Максимом и Торкелем. Я постараюсь пойти на это.

Ответы [ 3 ]

26 голосов
/ 22 октября 2008

, если страница относится к определенному элементу (например, Car.aspx? CarID = ABC123), у меня обычно есть открытое свойство на странице под названием «CurrentCar»

public Car CurrentCar { get; set; }

И тогда я могу получить следующее:

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

Это позволяет вам иметь безопасность типов. Просто убедитесь, что перед фактическим рендерингом назначен правильный объект.

5 голосов
/ 22 октября 2008

Я бы посоветовал вам сделать автомобиль защищенным свойством на странице, это позволит вам получить к нему доступ непосредственно на странице aspx:

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

Этот подход на самом деле лучше для сценариев привязки данных одного элемента, поскольку «привязка» строго типизирована.

0 голосов
/ 22 октября 2008

Одним из недостатков решения с защищенными свойствами является невозможность его использования для привязки к свойствам элементов управления.

Например, следующее не будет работать:

<asp:Label ID="Label1" Text="Probably a truck" Visible='<%# CurrentCart.Wheels > 4 %>' runat="server" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...