这是我的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/
它应该不是一个问题,因为我在另一个类上使用日期,并且它与完全相同的代码一起正常工作。
谁知道什么是错的?
答案 0 :(得分:1)
在您的情况下,我要检查的第一件事是日期字段的文本框的id
。它是否包含预期的id值? e.g。
<input ..... id="fim_gerencia"......
如果这是正确的,请打开浏览器开发工具中的Network
窗口。提交页面时,请在Network
页面中单击该请求以查看该请求。查看请求详细信息,其中一部分将是传递给服务器的表单值。在该部分中查找fim_gerencia
。
先做那些。
如果仍未通过,请尝试删除[Bind(Include=....
位,因为在您的示例中您不需要这样做。值得删除该属性并检查结果。