首页 > 解决方案 > 同时访问2条记录?

问题描述

我想知道是否有办法在我的编辑视图中访问模型表的 2 行。由于我只想在视图中编辑一条记录,因此无法在 GET 编辑控制器方法中加载包含 2 种方法的列表。有什么方法可以让我在视图中查询下一条记录?

我的控制器方法

 // GET: Record/Edit/5
 public ActionResult Edit(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Record record = db.Records.Find(id);
            if (record == null)
            {
                return HttpNotFound();
            }
            return View(record);
        }

        // POST: Record/Edit/5

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit([Bind(Include = "RecordID,BeforeDate,AfterDate,ShiftIDBefore,ShiftIDAfter,EmpAID,EmpBID,Reason,Self_interchange,Status")] Record record, string button)
        { 
//Codes for modifying the record
}

我的观点

@model Interchangesys.Models.Record


@{
    ViewBag.Title = "Edit";
}

<h2>Process interchange record</h2>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        @Html.HiddenFor(model => model.RecordID)
        <dt>
            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" name="button" value="Accept" class="btn btn-success btn-lg" style="width:200px;height:50px;font-size: 25px;" />
                    <input type="submit" name="button" value="Reject" class="btn btn-danger btn-lg" style="width:200px;height:50px;font-size: 25px;" />
                </div>
            </div>
        </dt>
<!--rest of the codes that shows the content of record with the same id and content of record with the id +1-->
}

提前致谢。

标签: c#htmlasp.net-mvcentity-framework

解决方案


好吧,如果我理解正确,您只想在视图中显示有关两条记录的信息。

您可以通过 ViewBag 传递下一条记录以在您的视图中可用,如下所示:

Record record = db.Records.Find(id);
Record next = db.Records.Find(id + 1);

ViewBag.Next = next;
return(record);

然后在您看来,您可以像这样访问它:

@{
    Record next = (Record)ViewBag.Next;
}

最后,要在视图中使用它,您可以执行以下操作:

@Html.Hidden("NextRecordID", next.RecordID) // You can't use @Html.HiddenFor

或者,您可以通过 ViewBag 传递两条记录,如下所示:

Record record = db.Records.Find(id);
Record next = db.Records.Find(id + 1);

ViewBag.Record = record  
ViewBag.Next = next;
return(); // There will be no model for your view.

然后在视图中为字段添加前缀,如下所示:

@{
    Record record = (Record)ViewBag.Record;
    Record next = (Record)ViewBag.Next;
}

@Html.Hidden("record.RecordID", record.RecordID)
@Html.Hidden("next.RecordID", next.RecordID)

因此,您可以像这样在 Edit 函数中获得它们:

public ActionResult Edit([Bind(Prefix = "record", Include = "...")] Record record, [Bind(Prefix = "next", Include = "...")] Record next, string button)

推荐阅读