我的项目中有一个内容实体模型,我是由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; }
}
如您所见,我有一列 DateOfPublish ,其类型为日期时间。
我想使用此功能将日期 DateOfPublish 转换为波斯日期:
public string ConvertToPersianToShow(DateTime? datetime)
{
string date;
DateTime dt;
if (!datetime.HasValue) return "";
dt = datetime.Value;
string year = Convert.ToString(persian_date.GetYear(dt));
string month = Convert.ToString(persian_date.GetMonth(dt));
string day = Convert.ToString(persian_date.GetDayOfMonth(dt));
if (month.Length == 1)
{
month = "0" + Convert.ToString(persian_date.GetMonth(dt));
}
if (day.Length == 1)
{
day = "0" + Convert.ToString(persian_date.GetDayOfMonth(dt));
}
Convert.ToString(persian_date.GetMonth(dt)) + "/" +
date = year + "/" + month + "/" + day;
return date;
}
所以我在我的视图(内容视图)中调用此函数,所以我尝试使用此函数在波斯语中显示日期。所以我将英语日期传递给我的函数,如下所示:
@{
ViewBag.Title = "Index";
DateConverter objconverter = new DateConverter();
}
<td>
@Html.DisplayFor(modelItem => objconverter.ConvertToPersianToShow(item.DateOfPublish.Date ))
</td>
但我收到了这个错误:
Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
祝你好运
答案 0 :(得分:1)
在Content类
上创建一个getter only属性public partial class Content
{
public string PersianToShow
{
get
{
return ConvertToPersianToShow(this.DateOfPublish);
}
}
}
然后在剃须刀视图中使用它:
@Html.DisplayFor(modelItem => modelItem.PersianToShow)
你得到的错误是因为处理表达式的MVC输入助手在输入表达式类型中受到限制(因为他们需要对不同类型的表达式进行内部缓存,一般来说处理表达式树是很昂贵的。编译电话)
错误消息是某些类型的表达式树支持的结果。