ASP.Net MVC 3 更改模型项

本文关键字:模型 Net MVC ASP | 更新日期: 2023-09-27 18:31:05

我想更改 HTML 页面中模型项的内容。我正在以下一个格式保存日期时间,在数据库中:yyyyMMddHHmmss

我想在 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>

ASP.Net MVC 3 更改模型项

如果我理解正确,问题是将数据库中的字符串转换为视图中更合适的字符串(通过视图模型):

您可以在模型中创建一个属性,该属性使用 TryParse 或 TryParseExact 解析您的格式(此处的好建议)。

[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属性应该可以帮助您以所需的格式直接显示数据。

好的,

我已经在阿列克谢的帮助下完成了。 这是我的解决方案:

    [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;
    }