我想在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())
两者都不适合我。当数据可用时,两者都显示为空。
答案 0 :(得分:3)
在DisplayFor
之外执行条件:
@if (Model.EndDate != 0)
{
Html.DisplayFor(modelItem => model.EndDate)
}
答案 1 :(得分: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());
}
}
答案 2 :(得分:0)
我认为你应该让你的模型属性成为可以为空的类型。因此,例如,如果其类型为DateTime,则将该属性声明为可为空的DateTime:
public DateTime? EndDate { get; set; }
这种方式而不是0日期(无论这意味着什么)你将没有任何价值。这也是有意义的,特别是如果这个模型属性来自数据库并且可以为空。
您可以在此处详细了解可空类型:http://msdn.microsoft.com/en-us/library/2cf62fcy(v=vs.80).aspx
答案 3 :(得分:0)
这个怎么样?
DateTime dt;
if (DateTime.TryParse("Your Date", out dt))
{
//Now you have validated the date
//Your code goes here
}
答案 4 :(得分:0)
我不喜欢上面给出的答案,因为将 IF 语句添加到所有内容只会减慢您的系统速度,在我的情况下,当类属性为 a 时,我需要在列表视图的每一行中多次显示默认字符串值空值。
所以看看这里的 MS 文档: 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;