ASP.Net MVC 3 EditorTemplate for DateTime字段错误

Ban*_*ord 6 partial-views editortemplates razor asp.net-mvc-3

此代码是从本教程中的一些ASP.Net MVC 2代码转换而来的:
带有DateTime的MVC 2编辑器模板

它是存储为"EditorTemplates/DateTime.cshtml"的DateTime字段的自定义EditorTemplate.

@Model DateTime?
@Html.TextBox("", (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty), new { @class = "datePicker" })
Run Code Online (Sandbox Code Playgroud)

但是,使用时出现以下错误@Html.EditorFor(model => model.NewAbsence.StartDate):

CS1973:'System.Web.Mvc.HtmlHelper'没有名为'TextBox'的适用方法,但似乎有一个名称的扩展方法.无法动态分派扩展方法.考虑转换动态参数或调用扩展方法而不使用扩展方法语法.

我在这里看过一些类似的帖子,提到了转换EditorFor方法的参数,但是我似乎无法在我的例子中使用它.

有人可以指出我需要在我的代码中更改.谢谢.

Dar*_*rov 11

实际上它是@model小写的m:

@model DateTime?
 ^
Run Code Online (Sandbox Code Playgroud)

代替:

@Model DateTime?
Run Code Online (Sandbox Code Playgroud)

  • @Banford,使用大写字母M来引用调用`Html.TextBox`中的实际模型实例.小写是用于指定模型类型的Razor关键字.大写是指视图基类的属性(默认为"WebViewPage"). (2认同)

Ban*_*ord 0

作为临时解决办法,我正在使用:

<div class="editor-field date-field">
    @Html.EditorFor(model => model.NewAbsence.StartDate)
    @Html.ValidationMessageFor(model => model.NewAbsence.StartDate)
</div>
Run Code Online (Sandbox Code Playgroud)

然后使用 jQuery 选择器:

 $(".date-field > input").datepicker({
                showOn: "button",
                buttonImage: "*pathtoimage*"
            });
Run Code Online (Sandbox Code Playgroud)

将日期选择器应用于“日期字段”div 内的输入标签。然而,这仍然没有按照我希望的最初显示方式格式化日期值,并且完全删除了编辑器模板。