相关疑难解决方法(0)

在MVC5中使用Html.DisplayFor()的日期格式

在这篇文章中引用了答案,我添加了/ Views/Shared/DisplayTemplates并添加了一个名为ShortDateTime.cshtml的局部视图,如下所示:

@model System.DateTime
@Model.ToShortDateString()
Run Code Online (Sandbox Code Playgroud)

当模型包含一个值时,它可以正常显示格式化的日期:

@Html.DisplayFor(modelItem => item.BirthDate, "ShortDateTime")
Run Code Online (Sandbox Code Playgroud)

但是,如果返回null值,则抛出'System.InvalidOperationException'.指示:

{"传入字典的模型项为null,但此字典需要一个类型为'System.DateTime'的非空模型项."}

我的第一个倾向是在局部视图中使用if语句,但似乎并不重要.在不引用模板的情况下,空值的处理方式如下:

@Html.DisplayFor(modelItem => item.BirthDate)
Run Code Online (Sandbox Code Playgroud)

但原始的格式问题仍然存在.当我尝试在视图中放置条件格式如下时,它不起作用,但我希望它只是一个语法的东西.

@Html.DisplayFor(modelItem => item.BirthDate == null) ? string.Empty : (modelItem => item.BirthDate, "ShortDateTime"))
Run Code Online (Sandbox Code Playgroud)

上面的结果是'System.InvalidOperationException':

{"模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式."}

那么,有没有办法在视图中进行条件格式化以仅从DateTime值生成日期?

c# asp.net-mvc formatting conditional datetime

6
推荐指数
1
解决办法
3万
查看次数

ASP.NET MVC使用数据批注遍历模型属性

问题描述

我的问题类似于此问题,但不是通过反射将Data Annotations应用于属性Name(由ModelMetadata.DisplayName处理),而是将其应用于值(未由ModelMetadata处理)。

详细说明

在ASP.NET MVC程序的上下文中。
假设我有一个Model类

public class Model
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string NickName { get; set; }
    public string Address { get; set; }
    public int Phone { get; set; }

    [Display(Name = "Start Date")]
    [DataType(DataType.Date)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime StartDate { get; set }

    [Display(Name = "End Date")]
    [DataType(DataType.Date)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime EndDate …
Run Code Online (Sandbox Code Playgroud)

c# reflection asp.net-mvc data-annotations

5
推荐指数
1
解决办法
1178
查看次数