在我的模型中,我有机会:
public DateTime CreatedFrom { get; set; }
在强类型视图中,我要显示该日期并使其可编辑(但仅限日期,而不是时间)。 我用:
@Html.EditorFor(m=>m.CreatedFrom.ToShortDateString())
当我想去那个视图时发生异常:
Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
如何正确?
答案 0 :(得分:1)
请注意,定义是
Html.EditorFor<T1, T2>(Expression<T1, T2> x)
不
Html.EditorFor<T1, T2>(Func<T1, T2> f)
因此剃刀引擎只查找字段名称CreatedFrom,但无法处理方法调用。 可能你需要额外的j来帮助来回转换。
答案 1 :(得分:1)
kamil,你不能将你的模型绑定到属性方法,你只能将它绑定到:
@Html.EditorFor(m=>m.CreatedFrom)
我强烈建议你在控制器(或服务类)中解决日期时间问题,作为填充视图的初始HttpGet操作的一部分,或者当你发回值时在HttpPost内部(不太理想)一个场景)。无论哪种方式,都必须在控制器级别采取补救措施。
答案 2 :(得分:1)
Linquinze是对的,EditorFor用于表达而不是Func。
如果您尝试显示日期的文本框,可以使用:
@Html.TextBox("CreatedFrom", @Model.CreatedFrom.ToShortDateString())
我相信它会实现同样的目标。