1

我的主视图中有一个局部视图,如下所示:

 <div id="complaintlist">
    @Html.Action("ShowCaseComplaints", "Cases", new { caseid = Model.CasesID })
</div>

这是部分视图:

@model IEnumerable<cummins_db.ViewModels.CaseComplaintsViewModel>

<table width="100%">
 <tr>
    <th></th>
    <th></th>
    <th>Complaint Code</th>
    <th>Complaint Description</th>
    <th>Delete</th>
</tr>  
@foreach (var item in Model)
    {
<tr>
    <td>
         @Html.HiddenFor(modelItem => item.CasesID )    
    </td>
    <td>
        @Html.HiddenFor(modelItem => item.CaseComplaintID )    
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.ComplaintCode )    
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.ComplaintType)
    </td>
    <td>
        @Ajax.ActionLink("Delete", "RemoveCodeFromCase", "Cases", new { caseid = item.CasesID, id = item.CaseComplaintID }, null)
    </td>        
 </tr>
    }
 </table>

此局部视图具有允许用户从局部视图中的模型中删除记录的操作。这是名为 RemoveCodeFromCase 的操作:

public ActionResult RemoveCodeFromCase(int caseid, int id)
        {
        if (ModelState.IsValid)
            {
            CaseComplaint c = db.CaseComplaints.Find(id);
            db.CaseComplaints.Remove(c);
            db.SaveChanges();

            var data = (from C in db.CaseComplaints
                        where C.CasesID == caseid
                        select new CaseComplaintsViewModel()
                        {
                            CasesID = C.CasesID,
                            CaseComplaintID = C.ComplaintCodeID,
                            ComplaintCode = C.ComplaintCode.ComplaintCodeName,
                            ComplaintType = C.ComplaintCode.ComplaintType
                        }).ToList();


            return PartialView("_CaseComplaintCodes", data);

            }

        return PartialView("_CaseComplaintCodes");
        }

我试图了解如何在此操作运行后刷新我的部分视图。

谢谢

4

2 回答 2

2

您正在使用的 Ajax 扩展方法将使用 jQuery Unobtrusive Ajax 扩展,这将允许您在客户端呈现结果。您需要在视图中包含 jquery.unobtrusive-ajax.js,然后指定要在其中呈现操作结果的目标 ID。假设它是原始容器,它看起来像这样:

@Ajax.ActionLink("Delete", "RemoveCodeFromCase", "Cases", new { caseid = item.CasesID, id = item.CaseComplaintID },  new AjaxOptions { UpdateTargetId = "complaintlist" }, null)
于 2012-10-29T16:03:32.917 回答
1

我您必须使用 ajax 才能实现您想要实现的目标,因为没有页面无法在您的操作发生时刷新,请阅读本文

http://www.codemein.net/2012/05/how-to-refresh-partial-view-with-ajax-asp-net/

于 2012-10-29T14:17:47.550 回答