По умолчанию для <% # (bind или eval)

1

Что-то вроде этого:

<asp:panel id="pnl_ItemOrder" runat="server" cssclass="ItemOrder" visible="<%# CheckEdit_Status(IsEditable) %>">

Как узнать, использует ли он Bind или Eval? Или что он делает?

  • 2
    Bind - это оба пути, Eval - это один из способов ...
  • 0
    @leppie Я это знаю, но <% #%> = (<% # BIND ()%> или <% # EVAL ()%>)
Теги:

2 ответа

1
Лучший ответ

Хорошо, так как прошло около 5 лет с тех пор, как я работал над чем-либо, тесно связанным с веб-формами, это будет оценка того, что происходит:

<body>
<form id="form1" runat="server">
<script type="text/C#" runat="server">
    private const bool isEdit = true;
</script>
<script type="text/C#" runat="server">

    private bool CheckEdit_Status(bool isEdit)
    {
        return isEdit;
    }

</script>
<asp:Panel ID="pnl_ItemOrder" runat="server" Visible="<%# (CheckEdit_Status(isEdit)) %>"
    Height="100" Width="100" BackColor="Aqua">
</asp:Panel>
<br />
<% pnl_ItemOrder.DataBind(); %>
</form>

Это то, с чем я играл, и из своих логических рассуждений и нескольких вещей, которые я помню из школы, тег <% #%> чаще используется для вызова функций, eval используется для оценки объекта и передает его в строку для представления в таких вещах, как ретрансляторы и datagrids, которые используют массивы значений.

Eval, используется для извлечения элемента a из блока данных и представления его в нем соответствующего контроллера данных (это важно), здесь вы вызываете функцию, которая не должна иметь никакого представления на странице и не находится в контроллере данных но вместо этого устанавливают на панели, поэтому вместо этого вы указываете серверу установить этот флаг для меня.

Переключение на Eval приведет к тому, что будет выбрано исключение, которое мы не можем отбросить bool к строке, поскольку нет способа представления bool в виде строки (да, есть возможность вызвать метод object.ToString() на нем, но что на самом деле это не то же самое, и в этом случае он генерирует исключение, так как visible является логическим, а не строковым).

Bind - это старая устаревшая версия Eval, которая в основном используется для обратной совместимости, если я правильно ее понял.

TL;DR;

Это ни то, ни другое, чтобы сообщить серверу о вызове функции и о том, что когда-либо сервер вернет = задает это значение здесь.

  • 1
    Вы могли бы просто напечатать последнее предложение.
3

То, что он делает, вызывает функцию с именем CheckEdit_Status().

Взгляните на код за файлом для этого метода и свойства. Если используется Bind() или Eval(), это будет в этом методе или какой-либо метод, вызываемый им.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню