首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当我尝试这样做时,得到一个模板错误?

当我尝试这样做时,得到一个模板错误?
EN

Stack Overflow用户
提问于 2011-02-04 06:02:42
回答 6查看 45.4K关注 0票数 18

我正在使用asp.net MVC3,我一直收到这个错误,我不理解它,因为我没有使用模板。

在我的局部视图中有这个

代码语言:javascript
复制
@model ViewModels.FormViewModel

    <div="tabs-1">
        @Html.TextBoxFor(x => x.Due.ToShortDateString())
    </div>

在我的视图模型中

代码语言:javascript
复制
public class FormViewModel
    {
        public DateTime Due { get; set; }


        public FormViewModel()
        {
            DueDate = DateTime.UtcNow;         
        }
    }

我得到了这个错误

模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用。说明:当前web请求执行过程中发生未处理异常。请查看堆栈跟踪,以了解有关错误的更多信息以及错误在代码中的来源。

异常详细信息: System.InvalidOperationException:模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-02-04 06:09:02

应该是这样的:

代码语言:javascript
复制
@Html.TextBoxFor(x => x.Due)

如果您想要此日期的某种格式:

代码语言:javascript
复制
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime Due { get; set; }

然后:

代码语言:javascript
复制
@Html.EditorFor(x => x.Due)

如果你真的想使用这个.ToShortDateString()方法,你需要使用一个非强类型的帮助器(显然我不建议这样做):

代码语言:javascript
复制
@Html.TextBox("Due", Model.Due.ToShortDateString())
票数 51
EN

Stack Overflow用户

发布于 2015-03-20 09:28:34

有一个重载可以帮助实现这一点,同时保持它的强类型。

代码语言:javascript
复制
// Specify that you're providing the format argument (string)
@Html.TextBoxFor(x => x.Due, format: Model.Due.ToShortDateString())

// Or use the overload with format and html options, where null is the htmloptions
@Html.TextBoxFor(x => x.Due, Model.Due.ToShortDateString(), null)
票数 7
EN

Stack Overflow用户

发布于 2011-02-04 06:10:10

你得到这个错误是因为.TextBoxFor() html helper使用了一个内置的模板(一个用于字符串输入的文本框),而你给了它一个过于复杂的lambda表达式(即不属于消息中列出的类型集)。

要解决此问题,请将要编辑的属性的类型更改为string,以便MVC可以使用默认的字符串模板,或者让MVC使用默认的日期时间模板。我推荐后者:

代码语言:javascript
复制
@Html.TextBoxFor(m => m.Due)

如果你对用户编辑日期的方式不满意,可以在构建编辑器的~/Views/Shared/EditorTemplates中放置一个名为"DateTime.cshtml“的局部视图,这样它就可以按照你想要的方式工作了。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4892248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档