Mi vista de afeitar solo envía los dos campos de cuadros de texto. Lo necesito para enviar un campo llamado "isDesigner" que es un bool o necesito poder recuperar esta información de la base de datos en el controlador en función de lo que indica el "Correo electrónico". es.
Aquí está el cshtml
@model Member
@{ ViewData["Title"] = "Index"; }
<div class="row">
<div class="col-md-4">
<form method="post">
<div>
<h4>Login</h4>
<div class="form-group">
<label class="control-label">Email: </label>
<input asp-for="Email" class="form-control" /><span asp-validation-for="Email" class="text-danger"></span>
</div>
<div class="form-group">
<label class="control-label">Password: </label>
<input asp-for="Password" class="form-control" /><span asp-validation-for="Password" class="text-danger"></span>
</div>
<input type="submit" class="btn btn-primary" />
</div>
</form>
</div>
</div>
<label> <a class="nav-link text-dark" asp-area="" asp-controller="Members" asp-action="Register">Register</a></label>
<label> <a class="nav-link text-dark" asp-area="admin" asp-controller="Home" asp-action="Index">Admin</a></label>
Este es el lado del controlador
public class MembersController : Controller
{
private readonly ThreeDeePrintingHubContext _context;
private readonly ILogger<MembersController> _logger;
public MembersController(ThreeDeePrintingHubContext threeDeeHubContext, ILogger<MembersController> logger)
{
_context = threeDeeHubContext;
_logger = logger;
}
[HttpPost]
public ActionResult Index(Member member)
{
var isValidMember = _context.Members.Where(x => x.Email == member.Email && x.Password == member.Password).Any();
if (isValidMember)
{
return Redirect("/Product");
}
else
{
TempData["Message"] = "Invalid user";
return View();
}
}
Hasta donde yo sé, si desea enviar el valor bool desde la vista al controlador, primero debe obtenerlo o configurarlo en la vista y luego enviarlo al controlador.
Más detalles, puede consultar los siguientes códigos:
<form method="post">
<div>
<h4>Login</h4>
<div class="form-group">
<label class="control-label">Email: </label>
<input asp-for="Email" class="form-control" /><span asp-validation-for="Email" class="text-danger"></span>
</div>
<div class="form-group">
<label class="control-label">Password: </label>
<input asp-for="Password" class="form-control" /><span asp-validation-for="Password" class="text-danger"></span>
</div>
<div class="form-group">
<label class="control-label">isDesigner: </label>
<input asp-for="isDesigner" class="form-control" /><span asp-validation-for="isDesigner" class="text-danger"></span>
</div>
<input type="submit" class="btn btn-primary" />
</div>
</form>
Clase de miembros:
public class Member
{
public string Email { get; set; }
public string Password { get; set; }
public bool isDesigner { get; set; }
}
Resultado:
[HttpPost]
public ActionResult Index(Member member)
{
Esta fue la respuesta
var myMember = _context.Members.Where(x => x.Email == member.Email && x.Password == member.Password).FirstOrDefault();
var isValidMember = myMember != null;
if (isValidMember)
{
if (myMember.IsDesigner)
{
return Redirect("/Product/DesignerIndex");
}
else
{
return Redirect("/Product");
}
}
else
{
TempData["Message"] = "Invalid user";
return View();
}
}
// GET: MembersController/Details/5
public ActionResult Details(int id)
{
return View();
}