嗨,我有點新MVC和實體框架,所以我想不出如何解決這個問題。我搜查了(相信我)一個awnser,但沒有結果。 我正嘗試使用實體框架登錄我的項目。事情是我補充說:ModelState.IsValid = false MVC 4實體框架
public string Confirmar_contraseña { get; set; }
到「用戶」的模式,以驗證(當你在註冊屏幕)的密碼是否相等
型號:
namespace MundialDeFutbol.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using DataAnnotationsExtensions;
using System.ComponentModel.DataAnnotations.Schema;
public partial class Usuarios
{
public int Id { get; set; }
[Required(ErrorMessage = "El nick (nombre de usuario) es obligatoio")]
[StringLength(15, MinimumLength = 3, ErrorMessage = "El nombre de usuario debe contener entre 3 y 15 caracteres")]
public string Nick { get; set; }
[Required(ErrorMessage = "La contraseña es obligatoria")]
[StringLength(10, MinimumLength = 4, ErrorMessage = "La contraseña debe contener entre 4 y 10 caracteres")]
public string Contraseña { get; set; }
[NotMapped]
[Compare("Contraseña", ErrorMessage = "Las contraseñas no coinciden")]
public string Confirmar_contraseña { get; set; }
public int Tipo_de_usuario { get; set; }
}
}
查看:
@using MundialDeFutbol.Models
@using System.Web.Optimization
@model Usuarios
@{
ViewBag.Title = "Login";
}
<h2>Login</h2>
@using (Html.BeginForm("Login", "Usuarios", FormMethod.Post, new { @class = "form-horizontal", @style = "margin-top: 20px;" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<div class="form-group">
<label for="Nick" class="col-sm-2 control-label">@Html.LabelFor(model => model.Nick)</label>
<div class="col-sm-10">
@Html.TextBoxFor(model => model.Nick, new { @class = "form-control", @placeholder = "Nombre de usuario" })
<strong>
@Html.ValidationMessageFor(model => model.Nick, null, new { @class = "text-danger", @style = "display: block; margin-top: 10px;" })
</strong>
</div>
</div>
<div class="form-group">
<label for="Contraseña" class="col-sm-2 control-label">@Html.LabelFor(model => model.Contraseña)</label>
<div class="col-sm-10">
@Html.TextBoxFor(model => model.Contraseña, new { @class = "form-control", @placeholder = "Escribe contraseña", @type = "password" })
<strong>
@Html.ValidationMessageFor(model => model.Contraseña, null, new { @class = "text-danger", @style = "display: block; margin-top: 10px;" })
</strong>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">Enviar</button>
</div>
</div>
}
@section scripts {
@Scripts.Render("~/bundles/jqueryval")
}
控制器
namespace MundialDeFutbol.Controllers
{
public class UsuariosController : Controller
{
//
// GET: /Usuarios/
public ActionResult Index()
{
return View();
}
public ActionResult Registrar()
{
return View();
}
[HttpPost]
public ActionResult Registrar(Usuarios usuario)
{
if (ModelState.IsValid)
{
var ctx = new MundialDBEntities();
ctx.Usuarios.Add(usuario);
ctx.SaveChanges();
return RedirectToAction("Index","Home");
}
return View();
}
public ActionResult Login()
{
return View();
}
[HttpPost]
public ActionResult Login(Usuarios usuario)
{
if (ModelState.IsValid)
{
FormsAuthentication.SetAuthCookie(usuario.Nick, false);
//This needs to be completed I think
return RedirectToAction("Index", "Home");
}
return View();
}
}
}
西班牙語中有一些單詞,對不起。重點是我使用「Confirmar_contraseña」作爲數據庫實體模型的輔助屬性,只是爲了確認用戶輸入相同的密碼,但是當我嘗試登錄時,ModelState返回false,我不知道爲什麼。
顯示你的模型,其中的ModelState聲稱是無效的actionmethod。 – CodeCaster
更多代碼請!你只問了半個問題。 '你添加了x來驗證密碼,但是.....' –
Im對此,使用這個編輯器真的很難--- – N3HL