У меня есть ASP Repeater DataBound к DataTable
, и я пытаюсь использовать код визуализации блока <% %>
сделать некоторую проверку с помощью другой функции в проекте. В принципе, если пользователь не является администратором, я не хочу, чтобы отображался первый столбец.`` <% %> внутри Repeater не работает, порядок оценки `<%# %> и` `<% %>
Функция возвращается правильно, но она все еще всегда перескакивает в блок if. Я пробовал один и тот же код в другом повторителе на другой странице, и он отлично работает. Любая идея, почему этот человек ведет себя странно?
<asp:Repeater runat="server" ID="batchesRPT">
<HeaderTemplate>
<table>
<tr> <% if(myProject.myUserRole.IsUserInRole("ADMIN"))
{ %>
<th>Select Batch</th> <% } %>
<th>Batch ID</th>
<th>Batch Date</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<% if(GenKFI.myUserRole.IsUserInRole("ADMIN"))
{ %> <td><%#Eval("CheckboxVAL") %></td> <% } %>
<td><%#Eval("BatchID") %></td>
<td><%#Eval("BatchDate") %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
UPDATE: В коде позади ранее, CheckboxVAL просто опущено в случае отсутствия администратора (поэтому оно не должно быть проблемой, так как если бы держать его от получения Eval «Под ред).
Я нашел this link и подумал, что это просто оценка тегов привязки данных слишком рано. Я сделал несколько шагов и обнаружил, что сначала попытается оценить <%#Eval("CheckboxVAL") %>
, ошибка (поскольку CheckboxVAL не существовал для не-админов), а затем вернуться и оценить операторы if. Я изменил его, так что не-админ DataTable также содержит столбец CheckboxVAL и просто оставьте его пустым. Теперь он будет оценивать пустой столбец, затем вернуться и проверить инструкции if, а не отображать первый столбец. Так что теперь это работает.
Это похоже на странное поведение. У кого-нибудь есть объяснение, почему он оценивает внутри оператора if, затем возвращается позже и проверяет условие?
У вас есть два разных утверждения, является ли это намеренным? –
Да, один для заголовка, и один для шаблона элемента – CDspace