cshtml页面没有在帖子上传递日期值

时间:2014-09-20 19:12:12

标签: asp.net-mvc twitter-bootstrap razor

这是我的cshtml代码:

@model pedidosOnlineMVC.Models.Administrador
@{
    Layout = "~/Views/SuperUser/_LayoutSU.cshtml";
}
@using (var f = Html.Bootstrap().Begin(new Form()))
{
    @f.FormGroup().CustomControls(Html.AntiForgeryToken())
    @f.FormGroup().TextBoxFor(model=>model.nome)
    @f.FormGroup().TextBoxFor(model=>model.cpf).Data(new {mask="999.999.999-99"})
    @f.FormGroup().TextBoxFor(model=>model.telefone).Data(new {mask="(99)99999-9999"})
    @f.FormGroup().TextBoxFor(model=>model.login)
    @f.FormGroup().PasswordFor(model=>model.senha)
    @f.FormGroup().TextBoxFor(model => model.fim_gerencia).Data(new { provide = "datepicker", date_format = "mm/dd/yyyy" })
    @f.FormGroup().CustomControls(@Html.Bootstrap().SubmitButton().Text("Cadastrar"))
}

这是视图的控制器:

[HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult cadAdmin([Bind(Include = "Administrador_Id, nome, cpf, telefone, login, senha, fim_gerencia")] Administrador adm)
    {
        if (ModelState.IsValid)
        {
            if (Helpers.Helpers.validaCPF(adm.cpf))
                if (db.Administrador.ToList().Where(x => x.cpf == adm.cpf).ToArray().Length == 0)
                {
                    adm.senha = System.Text.Encoding.Default.GetString(SHA1.Create().ComputeHash(System.Text.Encoding.UTF8.GetBytes(adm.senha)));
                    db.Administrador.Add(adm);
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
                else
                {
                    ModelState.AddModelError("cpf", "CPF já cadastrado");
                    return View("Index", "Index");
                }
            else
            {
                ModelState.AddModelError("cpf", "CPF inválido");
                return View(adm);
            }
        }
        Type type = adm.GetType();
        PropertyInfo[] props = type.GetProperties();
        for (int i = 2; i < props.Length; i++)
            if (ModelState.Values.ToList()[i-2].Errors.Count>0)
                ModelState.AddModelError(props[i].Name, props[i].Name + " inválido");
        return PartialView(adm);
    }

我遇到的问题是来自字段fim_gerencia的日期值未通过。其他一切工作正常,除了日期。 我正在使用此处找到的日期选择器:http://bootstrap-datepicker.readthedocs.org/en/release/ 它应该不是一个问题,因为我在另一个类上使用日期,并且它与完全相同的代码一起正常工作。 谁知道什么是错的?

1 个答案:

答案 0 :(得分:1)

在您的情况下,我要检查的第一件事是日期字段的文本框的id。它是否包含预期的id值? e.g。

<input ..... id="fim_gerencia"......

如果这是正确的,请打开浏览器开发工具中的Network窗口。提交页面时,请在Network页面中单击该请求以查看该请求。查看请求详细信息,其中一部分将是传递给服务器的表单值。在该部分中查找fim_gerencia

先做那些。

如果仍未通过,请尝试删除[Bind(Include=....位,因为在您的示例中您不需要这样做。值得删除该属性并检查结果。