インデックス、編集、作成、および詳細ビューを備えたケースモデルがあります。私はCasesコントローラーを持っています。ユーザーがケースの編集ビューを表示しているときに、部分的なビューでjQueryダイアログを開くボタンをクリックして、ケースに苦情コードを追加できるようにしたいと思います。部分的なビューは次のとおりです。
@model IEnumerable<cummins_db.Models.ComplaintCode>
@{
ViewBag.Title = "Case Complaint Codes";
}
<h2>Select a complaint code</h2>
<table>
<tr>
<th></th>
<th>
Complaint Code Name
</th>
<th>
Complaint Type
</th>
</tr>
@try
{
foreach (var item in Model)
{
<tr>
<td>
@Html.ActionLink("Select", "SelectForCase", new { id = item.ComplaintCodeID})
</td>
<td>
@Html.DisplayFor(modelItem => item.ComplaintCodeName)
</td>
<td>
@Html.DisplayFor(modelItem => item.ComplaintType)
</td>
</tr>
}
}
catch
{
}
</table>
ユーザーは、部分ビューリストに表示されているデータを選択し、開いている編集レコードに多対多の関係として追加できます。MTMレコードを追加するために、部分ビューからこのコントローラーメソッドを使用しています。
public void SelectForCase(int id)
{
int cid;
cid = casesid;
if (ModelState.IsValid)
{
CaseComplaint c = new CaseComplaint
{
CasesID = cid,
ComplaintCodeID = id
};
db.CaseComplaints.Add(c);
db.SaveChanges();
}
}
問題は、このアクションが発生した後、jQueryモーダルダイアログと編集ビューが閉じることです。jQueryダイアログを閉じて、ユーザーがケースレコードの編集を続行できるようにしたいだけです。
部分ビューは必要な処理を実行していますが、編集ビューを開いたままにしておく必要があります。
これは、[ビューの編集]アクションリンクから呼び出され、ダイアログで部分的なビューを開くjQueryです。
$(document).ready(function () {
$('.addComplaintLink').button();
$('#AddComplaintDialog').dialog(
{
autoOpen: false,
width: 400,
resizable: false,
modal: true,
buttons:
{
"Cancel": function () {
$(this).dialog('close');
}
}
});
$('.addComplaintLink').click(function () {
linkObj = $(this);
var dialogDiv = $('#AddComplaintDialog');
var viewUrl = linkObj.attr('href');
$.get(viewUrl, function(data) {
dialogDiv.html(data);
//open dialog
dialogDiv.dialog('open');
});
return false;
});
});