2

我试图创建一个视图助手,它接受一个 DateTime 对象并返回一个字符串。如果 DateTime 对象等于新的 DateTime(0),则该函数返回一个空字符串。否则返回格式化的 DateTime 字符串。到目前为止,这有效。

public static string DateTimeOrEmpty(this HtmlHelper htmlHelper, DateTime dateTime)
{
    return dateTime.ToString().Equals(new DateTime(0).ToString()) 
        ? String.Empty 
        : dateTime.ToString("{0:g}");
}

问题是,我想将格式 ("{0:g}") 作为参数传递:

public static string DateTimeOrEmpty(this HtmlHelper htmlHelper, DateTime dateTime, string format)
{
    return dateTime.ToString().Equals(new DateTime(0).ToString()) 
        ? String.Empty 
        : dateTime.ToString(format);
}

但它不能正常工作。如果我从我的角度调用助手

<%: Html.DateTimeOrEmpty(Model.StopDate, "{0:g}") %>

以“{0:g}”作为“格式”参数的函数,我得到类似“{O:n. Chr.}”的东西,这不是我所期望的

4

1 回答 1

3

{0:}部分用于格式化string.Format参数 - 您只需要将“g”传递给 ToString()。

<%: Html.DateTimeOrEmpty(Model.StopDate, "g") %>

不过,我会推荐你

  1. 对原始 DateTime 值进行比较 - 或者如果您确实想比较字符串,您只需构建一次显示字符串并重新使用它
  2. 您使用静态 DateTime.MinValue 进行比较,而不是每次都创建一个新的 DateTime - 或者至少创建一个静态实例进行比较。

IE

public static string DateTimeOrEmpty(this HtmlHelper htmlHelper, DateTime dateTime, string format)
{
    return (dateTime == DateTime.MinValue)
        ? String.Empty 
        : dateTime.ToString(format);
}
于 2010-07-27T09:45:18.717 回答