ASP.NETインラインスクリプト
質問
カスタムのグリッドのようなコントロールで印刷する必要があるDateTimeオブジェクトがあります。
印刷するデータのタイプは、dd-mm-yyyy形式の日付です。
この値は、入力するか空白にすることができます。
満たされている場合、 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()
空の文字列では、デフォルトのDateTimeが出力されます。
空の文字列ではない場合に Convert.ToDateTime
のみを実行するために、aspxコードでIf-Statementを作成する方法はありますか?
解決
Container.Value.Length > 0 ? Convert.ToDateTime(Container.Value).ToShortTimeString() : ""
また、 Container.Value
を、定義したスコープ内の任意のメソッドに渡すことができるはずです。
他のヒント
コードビハインドで保護されたメソッドを使用して、チェックを行うことができます
protected static string ConvertDate(object date) {
if (date == null)
return string.Empty;
return Convert.ToDateTime(date).ToShortTimeString();
}
所属していません StackOverflow