![](/img/trans.png)
[英]Model returns null when passing the grid with calculation value in controller to the view
[英]List returns null when passing from view to controller
我的Controller
有一個ActionResult
,可使用存儲過程從數據庫檢索數據。
RIROController.cs :
public ActionResult myRIRO()
{
// Calls the main ViewModel
var vm = new ResourceViewModel();
string EID = Session["EID"].ToString();
vm.CheckValues = db_RIRO.sp_GetAllCheckStatus()
.Select(a => new SelectListItem
{
Value = a.CheckID.ToString(),
Text = a.CheckStatus
})
.ToList();
// Calls the dictionary RIROList is nested inside ResourceViewModel
vm.UserRIList = new List<RIROFormViewModel>();
// Set current user's value of completion status to ddl
sp_GetUserRIForm_Result RIUserChkValue = db_RIRO.sp_GetUserRIForm(EID).FirstOrDefault();
sp_GetUserROForm_Result ROUserChkValue = db_RIRO.sp_GetUserROForm(EID).FirstOrDefault();
vm.RICheckID = RIUserChkValue.CheckID;
vm.ROCheckID = ROUserChkValue.CheckID;
foreach (var item in db_RIRO.sp_GetUserRIForm(Session["EID"].ToString()))
{
vm.UserRIList.Add(new RIROFormViewModel()
{
ItemNo = item.ItemNo,
CheckItem = item.CheckItem,
EmployeeTypeID = item.EmployeeTypeID,
ItemID = item.ItemID,
CheckID = item.CheckID,
DateCompleted = item.DateCompleted,
RIComment = item.Comments
});
}
return View(vm);
}
查看/ myRIRO.cshtml
@model OnlineRIRO.ViewModel.ResourceViewModel
@using (Html.BeginForm("UpdateRIROForm", "RIRO", FormMethod.Post, new { @class = "form-horizontal" }))
{
@foreach (var item in Model.UserRIList)
{
<tr>
<td>@item.ItemNo</td>
<td>@Html.Raw(item.CheckItem)</td>
<td>
@Html.DropDownListFor(a => a.RICheckID, Model.CheckValues, new { @class = "form-control input-sm" })
</td>
<td>
@Html.TextBoxFor(a => item.RIComment, new { @class = "form-control input-sm" })
</td>
</tr>
}
}
我想在vm.UserRIList
檢索數據,並對該集合中的每個項目執行存儲過程。
UpdateRIROForm
[HttpPost]
public ActionResult UpdateRIROForm(ResourceViewModel riroInfo)
{
var EID = Session["EID"].ToString();
if (ModelState.IsValid)
{
try
{
foreach (var item in riroInfo.UserRIList)
{
db_RIRO.sp_UpdateUserRIRODraft(EID, item.ItemID, item.CheckID, item.RIComment)
db_RIRO.SaveChanges();
}
return RedirectToAction("myRIRO");
}
catch
{
return RedirectToAction("myRIRO");
}
}
else
{
TempData["Fail"] = 1;
return RedirectToAction("myRIRO");
}
}
當我調試UpdateRIROForm
, riroInfo.UserRIList
為null。 我的代碼中缺少什么嗎?
在視圖中使用帶索引的for
循環
@model OnlineRIRO.ViewModel.ResourceViewModel
@using (Html.BeginForm("UpdateRIROForm", "RIRO", FormMethod.Post, new { @class = "form-horizontal" })) {
@for(int index = 0, index < Model.UserRIList.Count, index++) {
<tr>
<td>@Model.UserRIList[index].ItemNo</td>
<td>@Html.Raw(Model.UserRIList[index].CheckItem)</td>
<td>
@Html.DropDownListFor(model => model.RICheckID, Model.CheckValues, new { @class = "form-control input-sm" })
</td>
<td>
@Html.TextBoxFor(model => model.UserRIList[index].RIComment, new { @class = "form-control input-sm" })
</td>
</tr>
}
}
當表單回發給控制器時,這將允許填充模型中的集合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.