Привет!
У меня есть значение XML, которое я хотел бы использовать в качестве логического значения для переключения видимости панели. У меня примерно так:
<asp:FormView id = "MyFormView" runat = "server" DataSourceID = "MyXmlDataSource">
<ItemTemplate>
<!-- some stuff -->
<asp:Panel id = "MyPanel" runat = "server" Visible='<%# (bool)XPath("Menu/Show") %>'>
</asp:Panel>
<!-- some more stuff -->
</ItemTemplate>
</asp:FormView>
<asp:XmlDataSource id = "MyXmlDataSource" runat = "sever" DataFile = "MyFile.xml" />
Однако это вызывает исключение. Я попытался установить значение Show в моем XML на «true», «True», «0», но безрезультатно. Это вообще возможно? Мой XPath определенно работает, потому что я попытался переместить <% # (bool) XPath ("Menu / Show")%> наружу, чтобы я мог видеть его значение, и оно было правильным. Я пробовал это:
<%#((bool)XPath("Menu/Show")).ToString() %>
Но это также вызывает исключение.
Спасибо.





Попробуйте <%#(Convert.ToBoolean(XPath("Menu/Show"))) %>
Попробуй это:
Не уверен в синтаксисе равенства строк в классическом ASP, но вам нужно выполнить сравнение строк, а затем вернуть true или false.
... Visible = '<% # XPath ("Меню / Показать")). ToString (). Equals ("0")? вернуть истину: ложь%> '...
если xpath возвращает строку, разве вы не хотите использовать Boolean.Parse (XPath ("Menu / Show"))
TryParse вернет true, если сможет его проанализировать, а не если значение, которое он проанализировал, было истинным.
Как можно использовать TryParse из <% #%>?
Еще один:
System.Xml.XmlConvert.ToBoolean()
Допустимые строки: «1» или «истина» для правда и «0» или «ложь» для ложный.
Получу ли я бонусные баллы за самый непонятный способ преобразования в логическое значение?
Visible = '<% # (XPath ("Меню / Показать")) как строка == "1"? истина: ложь%> '
остерегайтесь нулевого исключения. Используйте "как строку" вместо .ToString ()
Можно ли использовать Boolean.TryParse ()?