在 Razor 视图中仅显示日期

发布于 2025-01-07 23:46:34 字数 426 浏览 0 评论 0原文

在我的模型中,我有属性:

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.

如何正确执行?

In my model i have propery:

public DateTime CreatedFrom { get; set; }

In strongly typed view i what to show that date and make it editable (but only date,not time).
I use:

@Html.EditorFor(m=>m.CreatedFrom.ToShortDateString())

When i want to go to that view exception occures:

Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.

How do it correctly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

旧人哭 2025-01-14 23:46:34

Linquinze 是对的,EditorFor 用于表达式而不是函数。

如果您尝试为您的日期显示一个文本框,您可以使用:

@Html.TextBox("CreatedFrom", @Model.CreatedFrom.ToShortDateString())

我相信这会实现相同的效果。

Linquinze is right, the EditorFor is for an Expression and not a Func.

If you are trying to display a textbox though for your date you could use:

@Html.TextBox("CreatedFrom", @Model.CreatedFrom.ToShortDateString())

which I believe will achieve the same thing.

盗梦空间 2025-01-14 23:46:34

kamil,您不能将模型绑定到属性方法,您只能将其绑定到:

@Html.EditorFor(m=>m.CreatedFrom)

我强烈建议您在控制器(或服务类)内解决日期时间问题,或者作为初始 HttpGet 操作的一部分填充视图,或者当您发送回值时填充到 HttpPost 中(这种情况不太理想)。无论哪种方式,都必须在控制器级别采取补救措施。

kamil, you cannot bind your model to a property method, you will only be able to bind it to:

@Html.EditorFor(m=>m.CreatedFrom)

I would strongly advise that you sort out the datetime issue inside your controller (or service class) either as part of the initial HttpGet action to populate the view, or inside the HttpPost when you send the values back (not quite as desirable a scenario). Either way, the remedial action must be taken at controller level.

青巷忧颜 2025-01-14 23:46:34

请注意,定义不是,

Html.EditorFor<T1, T2>(Expression<T1, T2> x)

因此

Html.EditorFor<T1, T2>(Func<T1, T2> f)

razor 引擎仅查找字段名 CreatedFrom,但无法处理方法调用。
可能您需要额外的 js 来帮助来回转换。

Note that definition is

Html.EditorFor<T1, T2>(Expression<T1, T2> x)

not

Html.EditorFor<T1, T2>(Func<T1, T2> f)

So the razor engine only looks for field name CreatedFrom, but cannot handle method call.
May be you need additional js to help convert back and forth.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文