带有DatePicker的MVC3 @HTMLEditFor如何使用ShortDate进行格式化

时间:2011-12-14 17:35:17

标签: asp.net-mvc-3 razor

我在视图中有以下CSHtml 我的模型中还有以下代码

            <td class="editor-field">
            @Html.EditorFor(model => model.Required_From)
            @Html.ValidationMessageFor(model => model.Required_From)
        </td>
   <script type="text/javascript">
       $(function () {
               //debugger
           $("#Required_From").datepicker({ dateFormat: "mm/dd/yy", changeYear: true,      changeMonth: true });
            });
            $(function () {
               //debugger
                $("#Required_To").datepicker({ dateFormat: "mm/dd/yy", changeYear: true, changeMonth: true });
            });
    </script>

在我的模型中,我有以下代码:

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Required_To", DbType="DateTime NOT NULL")]
    public System.DateTime Required_To
    {
        get
        {
            return this._Required_To;
        }
        set
        {
            if ((this._Required_To != value))
            {
                this._Required_To = value;
            }
        }
    }

我需要能够显示短日期格式,但是当我这样做时,我收到以下错误: “模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式。” 有没有办法使用短日期格式的模型和日期选择器? TIA 布鲁斯

1 个答案:

答案 0 :(得分:2)

我建议您始终在视图中使用视图模型,并且永远不要将域模型传递给它们。因此,在视图模型中,您可以使用[DisplayFormat]属性修饰属性,如下所示:

public class MyViewModel
{
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
    public DateTime RequiredFrom { get; set; }
}

然后,当您编写以下内容时,您的视图将强烈输入到视图模型中:

@Html.EditorFor(model => model.RequiredFrom)

您将获得所需的格式。

如果您想反对良好做法而不使用视图模型,可以这样说:

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