2016-01-19 142 views
-1

我想更改HTML頁面中模型項目的內容。 我保存日期時間,在數據庫中,在未來的格式:YYYYMMDDHHMMSSASP.Net MVC 3更改模型項目

,我想顯示,在HTML頁面,接下來的格式:DD-MM-YYYY HH-MM-SS

我該怎麼做?

<tr> 
    <td class="labels"> 
    <label>Data/Hora Token Telemóvel:</label> 
    </td> 
    <td> 
    @Html.TextBox("txtBoxNome", @Html.DisplayFor(modelItem => item.cdts_token_phone), new { @readonly = "readonly", @disabled = "disabled"}) 
    </td> 
</tr> 
+0

在將控制器中的日期發送到視圖之前,格式化控制器中的日期。你可以看到[在另一個問題](http://stackoverflow.com/questions/3025361/c-sharp-datetime-to-yyyymmddhhmmss-format)如何格式化日期。 –

+0

@DrewKennedy謝謝你的迴應。我知道如何完成格式,我不知道如何發送到視圖。我使用來自數據庫的數據填充文本框 – akunamatata

+0

您使用的是哪種數據庫管理系統?爲什麼不使用DATETIME或DATETIME2之類的適當類型? – Alexei

回答

1

如果我理解正確,問題是從您的數據庫轉換串入一個更合適的字符串中的視圖(通過視圖模型):

您可以創建在你的模型分析屬性的格式使用TryParseTryParseExact(來自here的重要建議)。

[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy HH-mm-ss}"] 
public DateTime MyDateTime 
{ 
    get 
    { 
     // should be defined as a constant elsewhere 
     string pattern = "yyyyMMddHHmmss"; 
     DateTime dt; 
     if (DateTime.TryParseExact(text, pattern, CultureInfo.InvariantCulture, 
          DateTimeStyles.None, out dt)) 
      return dt; 

     // return a value when format is invalid 
    } 
} 

DisplayFormat屬性應該可以幫助您直接顯示所需格式的數據。

+0

謝謝。你向我展示這種方式,我去了模型,並添加了一個私人函數轉換爲我想要的格式 – akunamatata

0

好的,我已經在阿列克謝的幫助下完成了。這裏是我的解決方案:

[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)] 
    [DataMemberAttribute()] 
    public global::System.String cdts_token_phone 
    { 
     get 
     { 
      return cdtsToDT(_cdts_token_phone); 
     } 
     set 
     { 
      Oncdts_token_phoneChanging(value); 
      ReportPropertyChanging("cdts_token_phone"); 
      _cdts_token_phone = StructuralObject.SetValidValue(value, true, "cdts_token_phone"); 
      ReportPropertyChanged("cdts_token_phone"); 
      Oncdts_token_phoneChanged(); 
     } 
    } 

private string cdtsToDT(string cdtsUT) 
    { 
     if(string.IsNullOrEmpty(cdtsUT)) 
      return string.Empty; 

     DateTime _newDT = new DateTime(int.Parse(cdtsUT.Substring(0, 4)), int.Parse(cdtsUT.Substring(4, 2)), 
       int.Parse(cdtsUT.Substring(6, 2)), int.Parse(cdtsUT.Substring(8, 2)), 
       int.Parse(cdtsUT.Substring(10, 2)), int.Parse(cdtsUT.Substring(12, 2))); 
     string cdts = _newDT.ToString("dd-MM-yyyy HH:mm:ss"); 
     return cdts; 
    }