发送模型问题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; }
}
}
所以我要做的是:
- 获取模型(HttpGet Action)
- 显示我的模型,然后用户将决定是否验证模型。
- 如果模型是有效的,然后我将它保存到数据库。
问题当用户点击提交按钮模型发送,但项目在quitaList
丢失,发送后,在我的HttpPost控制器,quitaList
是空的
那么如何修复它呢?也有任何其他的方法来做到这一点,显示模式之前保存到数据库,而不是使用从发送模型?
要在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"属性的值。如果你想要所有的属性值,那么你需要在循环中定义所有相同的代码。