Как поместить строку в CssClass с Eval в .NET - PullRequest
1 голос
/ 28 января 2012

Когда я запускаю приведенный ниже код на странице aspx, он работает без проблем.

<%# (DataBinder.Eval(Container.DataItem,"ExtendedProperties['ShowDetail']")) == null ? "show showdetail" : ( (bool)(DataBinder.Eval(Container.DataItem,"ExtendedProperties['ShowDetail']")) == true ?  "showdetail hide" : "show showdetail ") %>

Но когда я помещаю его в атрибут кнопки, он говорит, что тег сервера недействителен. В чем проблема

<asp:Button ID="btnShowDetail" OnClick="BindRecommendation" Text="" runat="server"
CssClass='<%# (DataBinder.Eval(Container.DataItem,"ExtendedProperties['ShowDetail']")) == null ? "show showdetail" : ( (bool)(DataBinder.Eval(Container.DataItem,"ExtendedProperties['ShowDetail']")) == true ?  "showdetail hide" : "show showdetail ") %>' BorderStyle="None" />

1 Ответ

1 голос
/ 28 января 2012

Ваша строка смешивается " и ' - внутренний ' заканчивается разделением концов значения атрибута CssClass.

Вам необходимо использовать one typeтолько.

Сложность заключается в том, что для оценки индексированного свойства с использованием строки необходимо использовать строки C #, поэтому ' не является допустимым разделителем, а необходимо использовать ".

Вы можете экранировать " в источнике HTML, удвоив их:

ExtendedProperties[""ShowDetail""]
...