6

我整个下午都在试图弄清楚如何做到这一点,但似乎无法掌握如何让 DatePicker 与我的网站一起工作。

此外,如果可能的话,我想删除 DateTime 的时间部分,因为我只对条目发布的日期感兴趣。

到目前为止,我已经在下面包含了代码,我几乎已经删除了到目前为止我尝试过的所有内容,所以它又回到了开头。我在 _Layout.cshtml 顶部引用了我认为正确的 JQuery 文件。

我在网上查看了许多指南,但很难理解它们,尽管我会继续阅读。

我已将这些行添加到我的 _Layout.cshtml 的顶部(我还解压缩并将 JQuery 文件夹复制到下面引用的位置)

<link href="@Url.Content("~/Content/jquery-ui/redmond/jquery-ui-1.8.21.custom.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.8.11.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/ui/minified/jquery.ui.core.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/ui/minified/jquery.ui.datepicker.min.js")" type="text/javascript"></script>

我的视图代码如下所示:

@model dale_harrison.Models.News

@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript">    </script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"     type="text/javascript"></script>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>News</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.News_Entry)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.News_Entry)
            @Html.ValidationMessageFor(model => model.News_Entry)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.News_Date)
        </div>
        <div class="editor-field">
            @*@Html.EditorFor(model => model.News_Date)*@
            @Html.EditorFor(model => model.News_Date, new object{ id = "news_date" } )
            @Html.ValidationMessageFor(model => model.News_Date)
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

<script type="text/javascript">
    $(document).ready(function () {
    $("#news_date").datepicker({ dateFormat: 'dd/mm/yy' });
    });
</script>

我的模型在这里:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

namespace dale_harrison.Models
{
    public class News
    {
        public int ID { get; set; }
        public string News_Entry { get; set; } 
        public DateTime News_Date { get; set; }
    }

    public class NewsDBContext : DbContext
    {
        public DbSet<News> News_Entries { get; set; }
    }
}

非常感谢任何人的帮助

4

4 回答 4

13

先试试这个:

添加没有 html 帮助器的 html 代码:

<input type="text" id="news_date" name="news_date" />

或者,如果您想id使用 Html 助手添加:

@Html.EditorFor(model => model.News_Date, new { id = "news_date" } )

然后添加这个 javascript 代码:

$(document).ready(function () {
            $("#news_date").datepicker({ dateFormat: 'dd/mm/yy' });
});

您可以先尝试此操作,以检查您是否已正确设置项目中的所有配置。你应该用这些线解决你的问题。

在您的站点中使用此功能后,请阅读有关 html 帮助程序以及如何封装代码的信息,这样您就不必每次都重写。

希望能帮助到你!

于 2012-06-22T16:32:34.413 回答
1

Views/Shared/EditorTemplates文件夹上,您需要为 DateTime 类型创建模板,因此每次使用@Html.EditorForMVC 时都会显示您在模板上定义的任何内容

于 2012-06-22T16:26:56.857 回答
0

您可能还希望从文本框中隐藏时间,以便看到“08/11/2007”而不是“08/11/2007 00:00:00”。

为此,请将“[DataType(DataType.Date)]”添加到您的新闻类中,如下所示;

public class News
{
    public int ID { get; set; }
    public string News_Entry { get; set; } 
    [DataType(DataType.Date)]
    public DateTime News_Date { get; set; }
}
于 2012-09-18T08:37:17.307 回答
0

EditorFor 忽略额外的属性。使用 TextBoxFor 或编写 EditorFor 模板...

于 2014-03-25T10:32:34.703 回答