2011-02-17 23 views
8

Tôi có thể giảm mã dao cạo này không?Tôi có thể giảm mã dao cạo xuống chỉ một vài dòng không?

<li> 
    @{ 
     if (@Model.PublicationDate.HasValue) { 
      @Model.PublicationDate.Value.ToString("D", new System.Globalization.CultureInfo("fr-FR")) 
     } 
     else { 
      @:"pas disponible" 
     } 
    } 
    </li> 

Tôi đã cố gắng này, nhưng nó không hoạt động:

@{(@Model.PublicationDate.HasValue) ? (@Model.PublicationDate.Value.ToString("D")) : (@:"pas disponible")} 

Trả lời

24

Bạn có thể trang trí bất động sản xem mô hình của bạn với các thuộc tính [DisplayFormat]:

[DisplayFormat(DataFormatString = "{0:D}", NullDisplayText = "pas disponible")] 
public DateTime? PublicationDate { get; set; } 

và sau đó nhìn của bạn chỉ đơn giản là trở thành :

<li> 
    @Html.DisplayFor(x => x.PublicationDate) 
</li> 

Vì vậy, bây giờ nó được giảm xuống một dòng đơn và thanh lịch.

+2

+1 - Tôi không biết về thuộc tính này! Cảm ơn! –

+0

Tôi thích nó, thực sự thông minh! –

+0

Bạn mất thông tin văn hóa. Mà có lẽ nên được đặt một nơi nào đó elese anyway. –

0

Tôi giả sử bạn có thể sử dụng ?: operator để rút ngắn. Nếu đó là một ý tưởng hay thì đó là một câu hỏi khác.

Và có thể bạn không muốn mã hóa cứng miền địa phương bằng new System.Globalization.CultureInfo("fr-FR") nhưng sử dụng ngôn ngữ từ một biến hoặc ngôn ngữ hiện tại của chuỗi.

+0

Tôi đang nghĩ đến việc sử dụng văn hóa máy chủ hiện tại –

Các vấn đề liên quan