IIS также сообщает код состояния 500 без подсказок журнала событий, если в физическом домашнем каталоге недостаточно разрешений (т. е. IIS_IUSRS не имеет доступа).
Если вы переключитесь на TemplateField
, вы можете сделать это встроенным.
<asp:TemplateField HeaderText="BankAcc">
<ItemTemplate>
<%# string.IsNullOrEmpty(Eval("HiddenBankAcc").ToString()) ? Eval("FullBankAcc") : Eval("HiddenBankAcc")%>
</ItemTemplate>
</asp:TemplateField>
Или как логическое значение
<asp:TemplateField HeaderText="BankAcc">
<ItemTemplate>
<%# Convert.ToBoolean(Eval("FullBankAcc")) ? Eval("FullBankAcc") : Eval("HiddenBankAcc")%>
</ItemTemplate>
</asp:TemplateField>
Одним из способов было бы добавить другое поле только для чтения к вашему классу MyObject, которое оборачивает логику, которую вы хотите, и привязывает столбец к этому полю.
public string DisplayValue
{
get {
if (Perm)
{
return HiddenBankAcc;
}
else
{
return FullBankAcc;
}
}
}