发送模型问题ASP.net MVC 4

本文关键字:net MVC ASP 问题 模型 | 更新日期: 2023-09-27 18:07:25

Controller httpGet Action:

[HttpGet]
        public ActionResult CalculCom(int id) 
        {
            CalcCom calc = new CalcCom();
            ComModel com = calc.CalculCom(id, 10, 2011);
            return View(com);
        }

This is my View:

// Some code to show my model attribute
@using (Html.BeginForm()) {
    @Html.HiddenFor(m=>m.ben)
    @Html.HiddenFor(m=>m.centre)
    @Html.HiddenFor(m=>m.mtn_brut)
    @Html.HiddenFor(m=>m.mtn_net)
    @Html.HiddenFor(m=>m.mtn_rs)
    @Html.HiddenFor(m=>m.quitaList) // this is a list 
    @Html.HiddenFor(m=>m.val_rs)
    @Html.HiddenFor(m=>m.versNum)
    <input type="submit" value="Valider"/> 
}

这是我的控制器HttpPost Action:

        [HttpPost]
        public ActionResult CalculCom(ComModel model)
        {
            //some code
            foreach (ComModel.quita qi in model.quitaList)
            {
                var quita = db.QUITA.Find(qi.n_quita);
                quita.VERSNUM = vers.VERSNUM;
                db.Entry(quita).State = EntityState.Modified;
            }
            db.SaveChanges();
            return RedirectToAction("Index");
        }

ComModel:

public class ComModel
{
    public int versNum { get; set; }
    public decimal mtn_brut { get; set; }
    public decimal mtn_net { get; set; }
    public decimal mtn_rs { get; set; }
    public decimal val_rs { get; set; }
    public string ben { get; set; }
    public int centre { get; set; } 
    public List<quita> quitaList = new List<quita>();
    public struct quita
    {
        public decimal mtn_com { get; set; }
        public decimal mtn_net { get; set; }
        public decimal mtn_ttc { get; set; }
        public decimal comp_prime { get; set; }
        public decimal mtn_fq { get; set; }
        public decimal mtn_tot { get; set; }
        public int n_quita { get; set; }
    }
}

所以我要做的是:

  1. 获取模型(HttpGet Action)
  2. 显示我的模型,然后用户将决定是否验证模型。
  3. 如果模型是有效的,然后我将它保存到数据库。

问题当用户点击提交按钮模型发送,但项目在quitaList丢失,发送后,在我的HttpPost控制器,quitaList是空的

那么如何修复它呢?也有任何其他的方法来做到这一点,显示模式之前保存到数据库,而不是使用从发送模型?

发送模型问题ASP.net MVC 4

要在form post期间将列表返回到模型中,您需要像这样遍历列表

@using (Html.BeginForm()) {
@Html.HiddenFor(m=>m.ben)
@Html.HiddenFor(m=>m.centre)
@Html.HiddenFor(m=>m.mtn_brut)
@Html.HiddenFor(m=>m.mtn_net)
@Html.HiddenFor(m=>m.mtn_rs)
@for(int i=0;i<Model.quitaList.Count;i++)
{
    @Html.HiddenFor(m=>m.quitaList[i].mtn_com)
}
 @Html.HiddenFor(m=>m.val_rs)
@Html.HiddenFor(m=>m.versNum)
<input type="submit" value="Valider"/> 

}

这将在模型中返回list,但注意它将只包含"mnt_com"属性的值。如果你想要所有的属性值,那么你需要在循环中定义所有相同的代码。