如何保存模型数据!ModelState.IsValid?

时间:2017-12-30 19:08:51

标签: c# asp.net-mvc post modelstate

我是MVC的初学者,所以我为新问题道歉:

如果用户没有正确填写表单,我想保留我的模型数据。

POST code in controller

当我返回res时,有没有办法保留View(res)的数据?

感谢您的帮助

编辑:

NewReservationVM类:

public class NewReservationVM
{
    int idRoom;
    string firstName;
    string lastName;
    DateTime checkin;
    DateTime checkout;
    decimal price;

    public int IdRoom { get => idRoom; set => idRoom = value; }
    [Required(ErrorMessage = "Veuillez saisir votre prénom.")]
    public string FirstName { get => firstName; set => firstName = value; }
    [Required(ErrorMessage = "Veuillez saisir votre nom.")]
    public string LastName { get => lastName; set => lastName = value; }
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime Checkin { get => checkin; set => checkin = value; }
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime Checkout { get => checkout; set => checkout = value; }
    public decimal Price { get => price; set => price = value; }
}

控制器:

[HttpPost]
    public ActionResult Create(NewReservationVM res)
    {
        if(ModelState.IsValid)
            return RedirectToAction("ResOk", res);

        return View(res);
    }

1 个答案:

答案 0 :(得分:-1)

我已将您的ViewModel类更改为:

public int IdRoom { get; set; }
[Required(ErrorMessage = "Veuillez saisir votre prénom.")]
public string FirstName { get; set; }
[Required(ErrorMessage = "Veuillez saisir votre nom.")]
public string LastName { get; set; }
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime Checkin { get; set; }
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime Checkout { get; set; }
public decimal Price { get; set; }

现在它正在按你的意愿工作。另外,如果你想使用私有字段并实现set和set方法,那么正确就是这样:

private int idRoom;
public int IdRoom
{
  get { return idRoom; }
  set { idRoom = value; }
}

我不熟悉您使用的语法,但这个是我所知道的最标准的语言,并且它正在发挥作用。