2013-07-10 57 views
2

我想顯示空字符串時model.EndDate0@ Html.DisplayFor空

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

我試圖

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

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

都對我沒工作。當數據可用時,兩個顯示都是空的。

+5

日期如何爲0?或者這是一個整數字段? –

+3

@ James123 ***僅供參考:請永遠不要將整型字段命名爲EndDate。你可以看到下面的答案讓人感到困惑。它會在六個月左右回來並咬你。*** – Win

+2

@你的意思是:「它會在186次左右後回來並咬你」。 – Tod

回答

3

做一個有條件的DisplayFor外:

@if (Model.EndDate != 0) 
{ 
    Html.DisplayFor(modelItem => model.EndDate) 
} 
+0

你也可以爲你的數據類型使用一個自定義的顯示模板(你沒有說明類型是什麼)。理想情況下,可以爲空的數據類型是最好的方法,因爲它們不以默認值(數字爲0,日期爲DateTime.MinValue)開始。話雖如此,如果您使用int數據類型,您可能不需要自定義顯示模板,因爲您可能想在不同的地方以不同的方式處理整數。 –

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()); 
    } 
} 
0

我想你應該讓你的模型屬性是可空類型。因此,舉例來說,如果它的類型是日期時間,然後申報財產作爲一個可空的DateTime:

public DateTime? EndDate { get; set; } 

這種方式,而不是0日期(知道是什麼意思),你將沒有任何價值。如果這個模型屬性來自數據庫並且可以爲空,這也是有意義的。

你可以閱讀更多關於可空類型在這裏:http://msdn.microsoft.com/en-us/library/2cf62fcy(v=vs.80).aspx

0

這件怎麼樣?

DateTime dt; 
if (DateTime.TryParse("Your Date", out dt)) 
{ 
    //Now you have validated the date 
    //Your code goes here 
}