C# 在MVC原因中显示日期时间;模板只能与字段访问错误一起使用;

C# 在MVC原因中显示日期时间;模板只能与字段访问错误一起使用;,c#,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,datetime,C#,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,Datetime,在我的项目中,我有一个由EF6创建的内容实体模型 public partial class Content { public Content() { this.Comments = new HashSet<Comment>(); } public int Id { get; set; } public string Subject { get; set; } [DataType(DataType.MultilineT

在我的项目中,我有一个由EF6创建的内容实体模型

 public partial class Content
{
    public Content()
    {
        this.Comments = new HashSet<Comment>();
    }

    public int Id { get; set; }
    public string Subject { get; set; }
    [DataType(DataType.MultilineText)]
    public string Brief { get; set; }
    [UIHint("tinymce_full"), AllowHtml]
    public string MainText { get; set; }
    [DataType(DataType.DateTime)]
    public System.DateTime DateOfPublish { get; set; }
    [DataType(DataType.ImageUrl)]
    public string SmallImageUrl { get; set; }
    [DataType(DataType.ImageUrl)]
    public string BigImageUrl { get; set; }
    public string KeyWords { get; set; }
    [DataType(DataType.DateTime)]
    public System.DateTime DateOfExpire { get; set; }
    public string AutherUserName { get; set; }
    public long VisitVCount { get; set; }
    public string Visible { get; set; }
    public int ContentGroupId { get; set; }
    public long LikeCount { get; set; }

    public virtual ContentGroup ContentGroup { get; set; }
    public virtual ICollection<Comment> Comments { get; set; }
}
因此,我在我的视图(内容视图)中调用了此函数,因此我尝试使用此函数以波斯语显示日期。因此,我将英文日期传递给了我的函数,如您所见:

@{
    ViewBag.Title = "Index";
    DateConverter objconverter = new DateConverter();
}
        <td>
    @Html.DisplayFor(modelItem => objconverter.ConvertToPersianToShow(item.DateOfPublish.Date ))
    </td>

致以最诚挚的问候

在内容类上创建仅getter属性

public partial class Content
{
 public string PersianToShow
 {
  get
  {
   return ConvertToPersianToShow(this.DateOfPublish);
  }
 }
} 
然后在razor视图中使用此选项:

@Html.DisplayFor(modelItem => modelItem.PersianToShow)
出现的错误是因为处理表达式的MVC输入帮助程序的输入表达式类型有限(因为它们需要对不同类型的表达式进行内部缓存,而且通常处理表达式树的成本很高。编译调用)


错误消息是受支持的某些表达式树类型的结果。

我不想在我的模型域中使用此类类。它是表示层。因此我认为这不是一个好主意?!!您有一个视图模型属性(要渲染的数据),而在该属性之上使用getter属性所做的一切就是将其格式化以满足所需的渲染要求。“此类”是什么意思?我的意思是“公共部分类内容”,我认为此类是表示层的一部分,因此您也将实体类用作viewmodel。i、 e.@Html.DisplayFor中的modelItem(modelItem…通常,数据/业务类有一个特定的投影到一个视图模型类中,该视图模型类只满足UI呈现/验证。在这种情况下,因为您也将内容类用作viewmodel,这是相同的原则。您可以为此创建一个viewmodel。但它将是整个内容(或者你需要的任何东西)+getter。
public partial class Content
{
 public string PersianToShow
 {
  get
  {
   return ConvertToPersianToShow(this.DateOfPublish);
  }
 }
} 
@Html.DisplayFor(modelItem => modelItem.PersianToShow)