3

我试图在什么时候显示空model.EndDate字符串0

@Html.DisplayFor(modelItem => model.EndDate)

我试过

@Html.DisplayFor(modelItem => model.EndDate == 0 ? "" : model.EndDate.ToString())

@Html.Display("End Date",model.EndDate == 0 ? "" : model.EndDate.ToString())

两者都不适合我。当数据可用时,两者都显示为空。

4

5 回答 5

4

在 之外做一个条件DisplayFor

@if (Model.EndDate != 0)
{
    Html.DisplayFor(modelItem => model.EndDate)
}
于 2013-07-10T16:54:16.090 回答
0

您无法在 asp.net 中将日期时间与 0 进行比较。

error CS0019: Operator `==' cannot be applied to operands of type `System.DateTime' and `int'

DateTime 是一种值类型,因此在未设置时它会获得 DateTime.MinValue 的默认值。

using System;
public class Test {
    public static DateTime badDate;
    public static DateTime goodDate = DateTime.Now; 
    public static void Main(string[] args) {
        Console.WriteLine(goodDate == DateTime.MinValue ? "" : goodDate.ToString());
        Console.WriteLine(badDate == DateTime.MinValue ? "" : badDate.ToString());
    }
}
于 2013-07-10T16:58:07.350 回答
0

我认为您应该使您的模型属性成为可为空的类型。因此,例如,如果它的类型是 DateTime,则将该属性声明为可为空的 DateTime:

public DateTime? EndDate { get; set; }

这样,您将没有任何价值,而不是 0 日期(无论这意味着什么)。这也很有意义,特别是如果此模型属性来自数据库并且可以为空。

您可以在此处阅读有关可空类型的更多信息:http: //msdn.microsoft.com/en-us/library/2cf62fcy (v=vs.80).aspx

于 2013-07-10T16:59:53.613 回答
0

这个怎么样 ?

DateTime dt;
if (DateTime.TryParse("Your Date", out dt))
{
    //Now you have validated the date
    //Your code goes here
}
于 2013-07-10T17:01:50.023 回答
0

我不喜欢上面给出的答案,因为将 IF 语句添加到所有内容只会减慢系统速度,在我的情况下,当类属性为空值时,我需要在列表视图的每一行中多次显示默认字符串值。

因此,请在此处查看 MS Docs: DisplayFormatAttribute.NullDisplayText Property

下面的示例演示如何使用 NullDisplayText 定义在数据字段为空时显示的标题。

// Display the text [Null] when the data field is empty.
// Also, convert empty string to null for storing.
[DisplayFormat(ConvertEmptyStringToNull = true, NullDisplayText = "[Null]")]
public object Size;
于 2020-12-30T21:30:57.283 回答