VB.NET имеет очень ... errmm ... прощение неявное приведение (и другие, в основном несвязанные, но просто неприятные) настройки с именем Option Strict
. По умолчанию это Off, поэтому он попытается - во время выполнения - преобразовать возвращаемое значение Eval
(то есть System.Object
) в тот тип, который требуется вашей функции.
C # использует другой подход и заставляет вас указать приведение. Итак, вы должны изменить его на:
<%#DisplayExpirationDate((string)Eval("DecalID"))%>
Обратите внимание, что если вам требуется строка, вы также можете сделать:
<%#DisplayExpirationDate(Eval("DecalID").ToString())%>
, но это не совсем то же самое - он потерпит неудачу, если значение равно null
(Nothing
в VB.NET), но завершится успешно, если оно DBNull
. Предыдущая версия будет напротив . Обычно я считаю случайное использование DBNull
и ToString
небрежным, поэтому настоятельно рекомендую первый шаблон и соответствующую проверку DBNull
, если это оправдано.