Есть ли способ привязки данных к одному элементу без eg. контроль репитера?
Допустим, у меня есть один объект типа 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.
Мне понравилось лучшее решение, предложенное Максимом и Торкелем. Я постараюсь пойти на это.
Ответы
Ответ 1
если страница посвящена определенному элементу (например, Car.aspx? CarID = ABC123), обычно у меня есть общедоступное свойство на странице "CurrentCar"
public Car CurrentCar { get; set; }
И я могу получить следующее:
<div>
Wheels: <%= CurrentCar.Wheels %><br />
Model: <%= CurrentCar.Model %>
</div>
Это позволяет вам иметь безопасность типа. Просто убедитесь, что у вас есть действительный объект, назначенный до фактического рендеринга.
Ответ 2
Я предлагаю вам сделать автомобиль защищенным свойством на странице, это позволит вам получить к нему доступ непосредственно на странице aspx:
<div>
Wheels: <%= Car.Wheels %>
Wheels: <%= Car.Models %>
</div>
Этот подход на самом деле лучше подходит для сценариев привязки отдельных элементов, поскольку "привязка" строго типизирована.
Ответ 3
Один из недостатков решения защищенного свойства заключается в том, что вы не можете использовать его для привязки к свойствам элементов управления.
Например, следующее не будет работать:
<asp:Label ID="Label1" Text="Probably a truck" Visible='<%# CurrentCart.Wheels > 4 %>' runat="server" />