@Html.TextBoxFor(x => x.ActiveDevice.LastUseDate, new { @readonly = "readonly" })
将我的日期文本框显示为只读,这很好,但它显示日期和时间。我只想要日期,所以iv使用.ToShortTimeString()with:
@Html.TextBoxFor(x => x.ActiveDevice.LastUseDate.ToShortTimeString(), new { @readonly = "readonly" })
我收到错误:
模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式。
任何人都知道如何解决这个问题? 感谢
答案 0 :(得分:2)
您可以使用HtmlAttributes插入格式化日期:
@Html.TextBoxFor(x => x.ActiveDevice.LastUseDate, new { @readonly = "readonly", @Value = Model.ActiveDevice.LastUseDate.ToShortTimeString() })
答案 1 :(得分:2)
这是因为TextBoxFor
(以及其他模板扩展)需要一个引用模型属性的表达式,因此模型绑定器可以序列化数据:
需要验证表达式是否有效;它需要至少结束 我们可以转换为模型的有意义字符串的东西 约束目的
(查看ModelMetadata.FromLambdaExpression
)
有几种方法可以解决这个问题,一种方法是在模型中添加DisplayFormat
属性:
[DataType(DataType.Date)] //try this as well? maybe Orchard intervenes into rendering...
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime LastUseDate { get; set; }
然后像往常一样使用该属性是视图:
@Html.TextBoxFor(x => x.ActiveDevice.LastUseDate, new { @readonly = "readonly" })
答案 2 :(得分:0)
感谢andreister的帮助,我能够解决问题。将其更改为“textBox”,删除lamba,广告在引号中添加文本框的名称:
@Html.TextBox("LastUseDate", Model.ActiveDevice.LastUseDate.ToShortDateString(), new { @readonly = "readonly" })