Встроенные скрипты ASP.NET - PullRequest
2 голосов
/ 24 ноября 2008

У меня есть объект DateTime, который мне нужно распечатать в пользовательском сетчатом элементе управления. Тип данных, которые я хочу напечатать, - это дата в формате дд-мм-гггг. Это значение может быть либо заполненным, либо пустым. Если он заполнен, он будет проанализирован в DateTime, а затем напечатан как значение по умолчанию ToString.

Для каждой строки я могу использовать

<CellTemplate>
    <asp:Literal ID="Literal2" runat="server" Text="<%# Container.Value %>"></asp:Literal>
</CellTemplate>

Но при этом печатается длинная версия даты по умолчанию. Я бы хотел формат от ToShortDateString().

Итак, я попытался изменить на:

<CellTemplate>
    <asp:Literal ID="Literal2" runat="server" Text="<%# Convert.ToDateTime(Container.Value).ToShortTimeString()%>"></asp:Literal>
</CellTemplate>

Это работает как задумано.

Теперь у меня проблема с пустыми датами,

Convert.ToDateTime()

В пустой строке будет напечатано время по умолчанию.

Есть ли способ, с помощью которого я мог бы создать выражение If в своем aspx-коде, чтобы выполнять только Convert.ToDateTime, если это не пустая строка?

Ответы [ 2 ]

2 голосов
/ 24 ноября 2008
Container.Value.Length > 0 ? Convert.ToDateTime(Container.Value).ToShortTimeString() : ""

Вы также должны иметь возможность передать Container.Value любому методу в области, которую вы определили.

0 голосов
/ 24 ноября 2008

В вашем коде может быть защищенный метод, который выполняет проверку за вас

protected static string ConvertDate(object date) {
    if (date == null)
       return string.Empty;
    return Convert.ToDateTime(date).ToShortTimeString();
}
...