C# 发送模型问题ASP.net MVC 4
控制器httpGet操作:C# 发送模型问题ASP.net MVC 4,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,控制器httpGet操作: [HttpGet] public ActionResult CalculCom(int id) { CalcCom calc = new CalcCom(); ComModel com = calc.CalculCom(id, 10, 2011); return View(com); } [HttpPost] pu
[HttpGet]
public ActionResult CalculCom(int id)
{
CalcCom calc = new CalcCom();
ComModel com = calc.CalculCom(id, 10, 2011);
return View(com);
}
[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");
}
我的看法是:
// 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"/>
}
康茂德:
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操作
显示我的模型,然后用户将决定是否验证模型。
若模型是有效的,那个么我将把它保存到数据库中。
当用户单击submit按钮时,问题是模型已发送,但quitaList中的项目丢失,发送后,在我的HttpPost控件中,quitaList为空
那么如何修复它呢?还有没有其他方法可以做到这一点,在将其保存到数据库之前显示模式,而不是使用“从”发送模型?要在表单发布期间将列表返回到模型中,您需要像这样循环浏览列表
@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"/>
}
这将在模型中返回列表,但请注意,它只包含mnt_com属性的值。如果需要所有属性值,则需要在循环中定义与上述代码相同的所有属性值 还可以显示ComModel的代码吗?@Fresh请参阅更新有没有其他可能的方法,比如使用全局变量指针?