【问题标题】:Why isn't my member information transferring from the razor page to the Controller为什么我的会员信息没有从剃须刀页面传输到控制器
【发布时间】:2021-03-28 06:10:11
【问题描述】:

我的剃刀视图只发送两个文本框字段。我需要它发送一个名为“isDesigner”的字段,它是一个布尔值,或者我需要能够根据“电子邮件”的内容从控制器中的数据库中检索此信息。

这是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>

这是控制器端

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();
            }
        }

【问题讨论】:

    标签: asp.net asp.net-core asp.net-core-mvc


    【解决方案1】:

    据我所知,如果要将视图中的布尔值发送到控制器,则应先获取它或将其设置在视图中,然后再发送到控制器。

    更多细节,您可以参考以下代码:

    <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>
    

    会员等级:

    public class Member
    {
        public string Email { get; set; }
    
    
        public string Password { get; set; }
    
    
        public bool isDesigner { get; set; }
    }
    

    结果:

    【讨论】:

      【解决方案2】:
         [HttpPost]
              public ActionResult Index(Member member)
              {
      

      这就是答案

              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();
          }
      

      【讨论】:

        猜你喜欢
        • 2021-05-27
        • 1970-01-01
        • 2022-01-19
        • 2020-12-20
        • 2020-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-05
        相关资源
        最近更新 更多