Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 在asp.net mvc 3 razor视图中使用other而不是@Html.DisplayFor_Asp.net Mvc 3_Entity Framework 4_Razor - Fatal编程技术网

Asp.net mvc 3 在asp.net mvc 3 razor视图中使用other而不是@Html.DisplayFor

Asp.net mvc 3 在asp.net mvc 3 razor视图中使用other而不是@Html.DisplayFor,asp.net-mvc-3,entity-framework-4,razor,Asp.net Mvc 3,Entity Framework 4,Razor,我是asp.NETMVC3的新手。由于asp.net mvc3中使用的约定,修改单个代码确实令人困惑且困难。我试图以1999年9月5日的格式只显示生日的日期,而不是显示日期和时间。在Edit.cshtml中,可以使用datepicker选择日期,值保存在仅日期的数据库中。但是,在使用@Html.DisplayFor(model=>model.BirthDate)时,我有数据类型为Date的BirthDate列,而不是DateTime在详细信息中。cshtml显示日期和时间。在谷歌搜索时,我发现并

我是asp.NETMVC3的新手。由于asp.net mvc3中使用的约定,修改单个代码确实令人困惑且困难。我试图以1999年9月5日的格式只显示生日的日期,而不是显示日期和时间。在Edit.cshtml中,可以使用datepicker选择日期,值保存在仅日期的数据库中。但是,在使用
@Html.DisplayFor(model=>model.BirthDate)时,我有数据类型为Date的BirthDate列,而不是DateTime详细信息中。cshtml显示日期和时间。在谷歌搜索时,我发现并实现了以下代码,用于以desire格式显示日期:

@Model.BirthDate.ToString("dd MMM YYYY");

它给出了错误,没有重载方法接受1个参数。此外,我还可以使用:

[DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]
pubilc DateTime BirthDate { get; set }

此后,我在实体框架中使用了模型优先的方法。我应该在哪里实现上面的DisplayFormat属性,或者使用什么语法以正确的方式详细显示日期。在我的场景中,第三种方法是我认为最好的方法

  • 您的表示模型处理UI的所有方面,并且您的视图没有不必要和冗余的格式代码,尤其是在重用该属性的情况下
  • 启用单元测试
  • 如果重用模型,则在不同页面上保持一致
  • 您还可以编写一个助手方法来格式化日期,并在所有演示/视图模型中一致地使用该方法

    public string FormattedDate(this DateTime dateTime)
    {
      return dateTime.ToString("dd MMM YYYY");
    }
    
    我喜欢用一种装饰图案来处理这种事情。假设您的模型类称为MyModel。然后定义如下所示的包装器类:

    public class MyModelDecorator 
    {
        public MyModel BaseItem { get; set; }
    
        [DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]
        public DateTime BirthDate { get; set; }
    
        public MyModelDecorator(MyModel baseItem)
        {
            BaseItem = baseItem;
        }
    }
    
    <span>@String.Format("{0:D}", model.BirthDate)</span>
    
    Output: Sunday, September 05, 1999 
    
    然后,在视图中,可以参考基础模型特性或装饰特性

    @Html.DisplayFor(m => m.BirthDate)
    @Html.DisplayFor(m => m.BaseItem.SomeOtherProperty)
    

    如果有比这个更好的解决方案,那么我真的很想听到它……

    好的,我知道我正在回答8个月前发布的一个问题,但我唯一的目的是,这可能对以后引用此问题的其他人有用。
    我也是MVC的novoice,我也面临着一个类似的问题,我只需要显示日期,而不需要显示时间,下面的内容对我有效

    而不是
    @Html.DisplayFor()
    。使用

    因此,对于上述案例,情况如下:

    public class MyModelDecorator 
    {
        public MyModel BaseItem { get; set; }
    
        [DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]
        public DateTime BirthDate { get; set; }
    
        public MyModelDecorator(MyModel baseItem)
        {
            BaseItem = baseItem;
        }
    }
    
    <span>@String.Format("{0:D}", model.BirthDate)</span>
    
    Output: Sunday, September 05, 1999 
    
    @String.Format(“{0:D}”,model.BirthDate)
    产出:一九九九年九月五日(星期日)
    

    不需要,需要添加额外的类/文件进行格式化。

    对于任何ASPX用户,sumbad答案都有帮助,但这是您的操作方式:

    <%=Html.Enconde(String.Format("{0:D}", item.yourDate))%>
    
    
    

    希望这对某人有所帮助。

    感谢您的回复。我是mvc3的新手,您能告诉我如何在场景中实现helper吗?只需创建一个名为ViewFormatter/FormatHelper的类,放入所需的方法,然后在视图或模型中引用此名称空间OK,不知道如何使用。我已经在其中创建了文件夹Decorator和MyModelDecorator.cs。现在,在视图中,我的引用是
    @model IVRControlPanel.Decorator.mymodeldecordator
    。MyModel的属性未绑定,但检测到BirthDate属性。或者,我在做什么wrong@CodeManiac在本例中,MyModel不是属性名,而是BaseItem。你可以给它取任何你喜欢的名字。我不是说它的名字。在我的场景中,我有用户类(作为MyModel)和用户名、电子邮件、密码等属性,这些属性没有绑定到我的view@CodeManiac正确的。。。必须使用MyModel.BaseItem.username等。如果要以MyModel.username的身份访问它们,则必须将它们添加到装饰器类中。