【问题标题】:Display only date in Session["DateOfBirth"] Asp.NET MVC在 Session["DateOfBirth"] Asp.NET MVC 中仅显示日期
【发布时间】:2021-10-10 19:05:30
【问题描述】:

Session["DateOfBirth"] 正在从数据库中收集日期时间(使用实体框架的 SQL),但我只想显示日期而不是时间。

这是我的代码:

查看模型类:

[Display(Name = "Date of Birth")]
[Required(ErrorMessage = "Date of Birth required")]
[DataType(DataType.Date)]
public string dob { get; set; }

控制器类:

Session["dob"] = umail.u_dob;

索引视图:

<div class="col">
  <h6>Date of Birth</h6>
  <p class=" ">@Session["dob"]</p>
</div>

输出画面:

【问题讨论】:

  • Custom date and time format strings,你可以显示任何你想要的,但你应该坚持/存储/跟踪一个DateTime实例而不是一个字符串。
  • 为什么要将此值存储在 Session 中,而不是存储在传递给 View 的 Model 中?

标签: c# asp.net-mvc session-cookies datetime-format


【解决方案1】:

以下代码适用于我的情况。 在控制器中使用此代码

Session["dob"] = Convert.ToDateTime(Session["dob"].ToString()).ToShortDateString();

【讨论】:

  • 日期值应存储为 DateTime 直到最后可能的时刻(视图中的呈现)。将其作为字符串存储在 Session 中违反了这一点。
  • 它在我的情况下有效,如果您知道任何其他方法,请建议我。
  • 我没有说它行不通。处理日期值的正确做法是将其存储为 DateTime,直到您真正需要显示它。这避免了不必要的转换,并提供了最大的灵活性。没有充分的理由做任何其他事情,尤其是在这种情况下。
【解决方案2】:

您可以通过转换 Session 变量来使用 ToShortDateString():

Convert.ToDateTime(Session["dob"].ToString()).ToShortDateString()

另一种选择是在您的视图模型中创建一个仅用于查看的新属性:

[Display(Name = "Date of Birth")]
[Required(ErrorMessage = "Date of Birth required")]
[DataType(DataType.Date)]
public string dob {
  get;
  set;
}

[Display(Name = "Date of Birth")]
public string formattedDob {
  get {
    DateTime dateResult;
    
    if (DateTime.TryParse(dob, out dateResult)) {
      return dateResult.ToShortDateString();
    }
    
    return "";
  }
}

【讨论】:

  • 这是工作会话["dob"] = Convert.ToDateTime(Session["dob"].ToString()).ToShortDateString();
【解决方案3】:

在控制器中试试这个:

Session["dob"] = umail.u_dob.ToString("MM/dd/yyyy");

【讨论】:

  • 它不工作... .ToString 不工作并给出错误
  • 日期值应存储为 DateTime 直到最后可能的时刻(视图中的呈现)。将其作为字符串存储在 Session 中违反了这一点。
猜你喜欢
  • 2019-01-06
  • 1970-01-01
  • 2014-12-15
  • 1970-01-01
  • 2015-11-20
  • 1970-01-01
  • 2020-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多