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 に答える