2016-01-19 104 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; 
    }