在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; }
}

在asp.net mvc中更新时忽略特定行

在填充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"))