ASP.NET MVC4按模型处理POST

时间:2013-10-28 20:14:22

标签: c# asp.net-mvc forms entity-framework authentication

我正在使用Entity Framework 6.0(代码优先)在ASP.NET MVC4中使用登录/注册系统,我想知道如何正确处理POST-s。

我的用户模型:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace Autokereskedes.Models
{
    public class User
    {
        //Saját Kulcs
        [Key]
        public int UserId { set; get; }

        //Külső kulcsok

        //Model hivatkozások
        public List<Reservation> Reservations { set; get; }

        //Egyedi elemek
        [Required]
        [EmailAddress]
        [StringLength(254)]
        [Display(Name = "E-mail")]
        public string Email { set; get; }

        [Required]
        [DataType(DataType.Password)]
        [StringLength(100,MinimumLength=4)]
        [Display(Name = "Jelszó")]
        public string Password { set; get; }

        public string Phone { set; get; }

        public Boolean Banned { set; get; }
        public string Country { set; get; }
        public string City { set; get; }
        public string Street { set; get; }
        public int? ZipCode { set; get; }
        public DateTime RegistrationDate { set; get; }
        public DateTime? LastLoginDate { set; get; }
        public DateTime? PasswordChangedDate { set; get; }


    }
}

我的LogIn功能:

[HttpPost]
public ActionResult LogIn(User user)
{
    if (ModelState.IsValid)
    { 
        if (IsUserDataValid(user.Email, user.Password))
        {
            FormsAuthentication.SetAuthCookie(user.Email, user.???)
        }
    }

    return View();
}

我想基于登录表单中的复选框设置持久性cookie,但我的用户模型没有public Boolean StayLoggedIn;属性,我也不希望此选项也存储在我的数据库中。我该怎么处理?

我的登录表单:

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true, "Sikertelen belépés, ellenőrizze adataid!");

    <div>@Html.LabelFor(u => u.Email)</div>
    <div class="input-control text">
        @Html.TextBoxFor(u => u.Email, new { @placeholder = "Írja be az email címét"})
        @Html.ValidationMessageFor(u => u.Email)
        <button class="btn-clear"></button>
    </div>
    <div>@Html.LabelFor(u => u.Password)</div>
    <div class="input-control password">
        @Html.TextBoxFor(u => u.Password, new { @placeholder = "Írja be jelszavát" })
        @Html.ValidationMessageFor(u => u.Password)
        <button class="btn-reveal"></button>
    </div>
    <label class="input-control checkbox">
        <input type="checkbox">
        <span class="helper">Bejelentkezve marad</span>
    </label>
    <input type="submit" value="Bejelentkezés" />
}

2 个答案:

答案 0 :(得分:0)

根据默认项目模板中的默认帐户模型类,您应该有一个RegisterInputModel和一个LoginInputModel

答案 1 :(得分:0)

我认为您必须为登录页面创建另一个模型:

class LogInModel
{
    public string UserName { get; set; }
    public string Pass { get; set; }

    public bool StayLoggedIn { get; set; }
}

并根据此模型创建视图,并在控制器中检索此模式。

在登录页面中使用用户模型不是一个好主意。