Asp.net mvc 4 MVC4型号更改未显示
我知道你在想什么,但请听我说完 我有一个模型:Asp.net mvc 4 MVC4型号更改未显示,asp.net-mvc-4,caching,Asp.net Mvc 4,Caching,我知道你在想什么,但请听我说完 我有一个模型: public partial class DealerBudget { public int DealerBudgetID { get; set; } public int DealerID { get; set; } public int BudgetYr { get; set; } public int BudgetMonth { get; set; } public decimal Budget
public partial class DealerBudget
{
public int DealerBudgetID { get; set; }
public int DealerID { get; set; }
public int BudgetYr { get; set; }
public int BudgetMonth { get; set; }
public decimal BudgetAmt { get; set; }
public bool Confirmed { get; set; }
public short BudgetTypeID { get; set; }
}
虚拟机中有以下列表:
public class DealerBudgetVM
{
public List<CNHi.StMarys.ND.DBP.Web.Models.DealerBudget> YrBudget { get; set; }
}
…视图上没有任何更改。新的(已确认的)预算文本框应该被禁用,而不是
“没问题!”你说。“这家伙只需要……”
- 使用ModelState.Clear()。试过了,没用李>
- 从ModelState中删除键。试过了,没用
- 使用Post重定向获取。尝试了它(重定向到部分和主。上面的当前代码仍在使用它)。没用
- 清除缓存。尝试了很多很多方法和迭代。什么都没用
还有其他想法吗?这是因为嵌套或局部视图还是其他原因?您不需要
ModelState.Clear()(没有向ModelState
!)添加任何内容)。视图中的循环应该是@for(int i=0;i
您不应该覆盖值
属性-使用@Html.TextBoxFor(m=>m.YrBudget[i].BudgetAmt,“{0:0.00”}”,new{…})
设置显示格式我尝试了ModelState.Clear()在帖子中使用它后,出于绝望,在一些地方,我将在这里删除它。循环实际上在两个地方显示今年和明年,并且始终有24条记录。我将ToString更改为您的代码,它显示4个12月的位置,这就是我以前使用它的原因。哎呀,它应该是“{0:0.00}”
(有一个额外的)
在那里)。你应该使用格式化输入是的,在我回答之前,我修正了额外的“是的。它仍然给出1234.0000。这只是显示Get。Get第一次工作正常,只是在发布后没有显示更改。
public ActionResult Add()
{
DealerBudgetVM result = new DealerBudgetVM(); //initialised to have all 24 months
List<DealerBudget> dbList = db.DealerBudgets.Where(x => x.DealerID == dbp.dealerID && x.BudgetTypeID == (short)2 && (x.BudgetYr == DateTime.Now.Year || x.BudgetYr == DateTime.Now.Year + 1)).ToList();
//use the data from the DB if it exists
foreach (DealerBudget bud in result.YrBudget)
{
foreach (DealerBudget budDB in dbList)
{
bud.DealerID = dbp.dealerID;
bud.BudgetTypeID = 2; //Service
if (budDB.BudgetYr == bud.BudgetYr && budDB.BudgetMonth == bud.BudgetMonth)
{
bud.DealerBudgetID = budDB.DealerBudgetID;
bud.BudgetAmt = budDB.BudgetAmt;
bud.Confirmed = budDB.Confirmed;
}
}
}
return PartialView(result);
}
@for( int i = 0; i < 12; ++i)
{
@Html.HiddenFor(model => model.YrBudget[i].DealerBudgetID)
@Html.HiddenFor(model => model.YrBudget[i].BudgetTypeID)
@Html.HiddenFor(model => model.YrBudget[i].DealerID)
@Html.HiddenFor(model => model.YrBudget[i].BudgetYr)
@Html.HiddenFor(model => model.YrBudget[i].BudgetMonth)
@Html.HiddenFor(model => model.YrBudget[i].Confirmed)
<div class="pure-u-1-3 pure-u-md-1-6 pure-u-lg-1-12 s-box">
<span class="pure-u-1">@Html.DisplayFor(model => model.YrBudget[i].MonthDesc)</span>
@Html.TextBoxFor(model => model.YrBudget[i].BudgetAmt, (Model.YrBudget[i].Confirmed == false) ? (object)new {type="number", Value=Model.YrBudget[i].BudgetAmt.ToString("0.00")} : (object)new {disabled = "disabled", Value=Model.YrBudget[i].BudgetAmt.ToString("0.00")} )
</div>
}
[HttpPost]
public ActionResult Added(DealerBudgetVM vm)
{
if (ModelState.IsValid)
{
this.ModelState.Clear();
foreach (DealerBudget budVM in vm.YrBudget.Where(x => x.Confirmed == false && x.BudgetAmt > 0).ToList())
{
//If it's not in the DB, add it.
if (budVM.DealerBudgetID == 0)
{
DealerBudget budNew = new DealerBudget { BudgetYr = budVM.BudgetYr, DealerID = budVM.DealerID, BudgetMonth = budVM.BudgetMonth, BudgetTypeID = budVM.BudgetTypeID, BudgetAmt = budVM.BudgetAmt };
if (budNew.BudgetAmt > 0)
{
budNew.Confirmed = true;
budVM.Confirmed = true;
}
db.DealerBudgets.Add(budNew);
db.SaveChanges();
budVM.DealerBudgetID = budNew.DealerBudgetID;
}
else
{
//update and confirm
DealerBudget budDB = db.DealerBudgets.Where(x => x.DealerBudgetID == budVM.DealerBudgetID).FirstOrDefault();
if (budDB == null)
{
}
else
{
budDB.BudgetAmt = budVM.BudgetAmt;
budDB.Confirmed = true;
db.SaveChanges();
budVM.Confirmed = true;
}
}
}
return RedirectToAction("Index", "ServicePerformance");
}
else
{
return PartialView(vm);
}
}