在asp.net mvc中更新时忽略特定行
本文关键字:更新 asp net mvc | 更新日期: 2023-09-27 17:50:36
我正在尝试使用asp.net mvc 4
&EF6
,我想一次更新多行。到目前为止,一切都很好,但是当我从视图中忽略也将更新的字段时,当我尝试更新时,我得到NullReferenceException
错误。这是我的代码,
[HttpPost]
public ActionResult DueCheck(FlatModel DueLists)
{
if (Session["username"] != null)
{
if (ModelState.IsValid)
{
foreach (var BillId in DueLists.BillCollection)
{
var dbRentSchedule = db.BillChecks.Where(p => p.billid == BillId.billid).FirstOrDefault();
if (dbRentSchedule != null)
{
dbRentSchedule.isRented = BillId.isRented;
if (BillId.isRented == "Y")
{
dbRentSchedule.isFull = "Y";
dbRentSchedule.due = 0;
}
}
else
{
return RedirectToAction("DueError");
}
}
db.SaveChanges();
return RedirectToAction("DueCheck");
}
else
{
return RedirectToAction("DueError");
}
}
else
{
return RedirectToAction("AdminLogin");
}
}
<<p> 视图/strong> @using (Html.BeginForm("DueCheck", "Home"))
{
@Html.ValidationSummary(true)
@for (int i = 0; i < Model.BillCollection.Count; i++ )
{
if(Model.BillCollection[i].fullname != "N/A" && Model.BillCollection[i].isFull != "Y") //If I remove the second condition then it works but will also show the records which is not needed.
{
<tr>
<td>@Html.DisplayFor(m => m.BillCollection[i].name)</td>
<td>@Html.HiddenFor(m => m.BillCollection[i].billid)@Html.DisplayFor(m => m.BillCollection[i].due)</td>
<td><div class="isFull btn btn-info">Approve</div>@Html.HiddenFor(m => m.BillCollection[i].isRented, new { @class = "assignFull" })</td>
</tr>
}
}
<input type="submit" class="btn btn-success" value="Update" />
}
如果我从视图中删除条件Model.BillCollection[i].isFull != "Y"
,那么它会完美地工作,但它也会显示不必要的记录,这使得我的系统毫无意义。如何从服务器端而不是客户端忽略这些记录?急需这种帮助。Tnx .
BillCheck Model(EF6 generated)
public partial class BillCheck
{
public string name { get; set; }
public string isRented { get; set; }
public string isFull { get; set; }
public int due { get; set; }
}
<<p> FlatManagement模型/strong> public class FlatManagement
{
public List<BillPayCheck> BillCollection { get; set; }
}
在填充BillCollection对象的linq中添加这两个条件
Model.BillCollection[i].fullname != "N/A" && Model.BillCollection[i].isFull != "Y"
你的linq应该像
db.BillCollection.Where(p => !p.fullname.equals("N/A") && !p.isFull.equals("Y"))