MVC3 EF Code First - JQuery UI Datepicker错误

时间:2011-11-02 01:49:58

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

我在mvc3应用程序中遇到问题,当我从日期选择器中选择过去12天的日期时,控制器获取日期时间的默认日期“1/01/0001”

继承我的模特

    public virtual int ID { set; get; }

    [Required]
    [Display(Name="Cantidad de CD4")]
    [Range(400,1200, ErrorMessage="La cantidad de CD4 debe estar entre 400 y 1200")]
    public virtual int Cantidad_CD4 { set; get; }

    [DataType(DataType.Date)]
    public DateTime Fecha { set; get; }

我的观点     @model PacientMVC.Models.CD4

@{
    ViewBag.Title = "Create";
}

`

创建

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

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

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

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

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

然后我的控制器方法

     [HttpPost]
    public ActionResult Create(int pacientID, CD4 newCD4)
    {
        try
        {
            // TODO: Add insert logic here
            var objpacient = _db.Pacients.Single(r => r.ID == pacientID);
            objpacient.CD4S.Add(newCD4);
            _db.SaveChanges();



            return RedirectToAction("Details", "Pacient", new { id = pacientID });
        }
        catch (DbEntityValidationException dbEx)
        {
            foreach (var validationErrors in dbEx.EntityValidationErrors)
            {
                foreach (var validationError in validationErrors.ValidationErrors)
                {
                    Trace.TraceInformation("Property: {0} Error: {1}",     validationError.PropertyName, validationError.ErrorMessage);
                }
            }

            return View();
        }


        //}
        //catch
        //{
        //    return View();
        //}
    }

我和我的jquery一样

$(document).ready(function () {

$('.date').datepicker({ dateFormat: "dd/mm/yy" });

});

我为DATETIME制作了以下模板

@model  System.DateTime     


@Html.TextBox("", Model.ToString("dd/MM/yyyy"), new { @class = "date" })

我来自西班牙(和MVC中的noob)所以我们使用以下格式的日期:dd / mm / yyyy

我认为他认为我使用的日期类似于美国mm / dd / yyyy

错误是_db.SaveChanges();中的dbentityvalidationexception;

我不知道我必须在哪里进行更改

抱歉,我的英语不好请帮助我

1 个答案:

答案 0 :(得分:0)

它看起来确实像一个全球化问题。

尝试将此添加到您的web.config:

<system.web>
    <globalization culture="es-ES" uiCulture="es-ES" />
    ...
</system.web>

可能会起作用:)

Scott Hanselman写了一篇关于此事的博文: http://www.hanselman.com/blog/GlobalizationInternationalizationAndLocalizationInASPNETMVC3JavaScriptAndJQueryPart1.aspx
还有关于全球化的DatePicker的例子。


旁注:在将实体保存到数据库之前,还应使用ModelState.IsValid