日期选择器未保存到数据库

时间:2012-04-09 10:28:12

标签: asp.net-mvc-3 entity-framework

连接datepicker的问题

部分视图的代码

@model System.DateTime
@Html.TextBox("", Model.ToString("dd/MM/yy"), new { @class = "date" })

视图的代码

 @Html.TextBox("DateTime", (Model.AdvertStartDate.ToString()), new { @class = "date" })

脚本

 <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
 <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>

用于datepicker的代码

<script type="text/javascript">
    $(document).ready(function () {
        $('.date').datepicker
        ({
            dateFormat: 'dd/mm/yy',
            showStatus: true,
            showWeeks: true,
            currentText: 'Now',
            autoSize: true,
            gotoCurrent: true,
            showAnim: 'blind',
            highlightWeek: true

        });
    });
</script>

模型代码

 [Required]
   public DateTime AdvertStartDate { get; set; }

日期是插入文本框但未在数据库中更新

你能提出任何遗漏的建议吗?

2 个答案:

答案 0 :(得分:1)

我认为<input>呈现的HTML TextBox("DateTime",...)元素没有正确的名称(名称将是“DateTime”),因此它不会正确绑定到您的模型属性{ {1}}数据发布到服务器时。

您的“局部视图”对我来说就像是一个EditorTemplate。在这种情况下,您应该可以在视图中使用它:

AdvertStartDate

由于@Html.EditorFor(model => model.AdvertStartDate) 的类型为AdvertStartDate,因此应使用包含DatePicker的EditorTemplate来呈现输入元素。

如果EditorTemplate文件的名称不是DateTime,而是DateTime.cshtml - 您可以明确指定模板:

AnotherTemplateName.cshtml

答案 1 :(得分:0)

Datapicker不是在MVC应用程序中实现的简单元素。

接下来尝试condsider:

  1. 确保将数据选择器中的数据发送到服务器(数据贴板应具有适当的名称)
  2. 确保datapicker dataformat与您的应用程序数据格式相同(可以在选择的文化上进行不同的处理) - 在这种情况下,数据将发送到服务器,但并不总是有效,因为31.01将被转换为第31个月,日期1