クライアントを格納するページを作成しています。クライアントは、ドメインと連絡先と仕事を持つことができます。各連絡先/ドメイン/ジョブには、編集/削除機能があります。
MVC 4 ASP.NET c# を使用して、編集/削除するたびにモーダル フォームを起動します。
連絡先とドメインの削除ビューは、表示されるフィールドを除いてまったく同じです。部分ビューの場合、ドメイン削除機能は何も起動しません。ただし、通常のビューとして URL に移動すると成功します。連絡先の削除は、部分ビューで正常に機能します。
@model STClient.Models.Domain
@{
ViewBag.Title = "DeleteDomain";
}
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>
@using (Html.BeginForm("DeleteDomain", "Client", FormMethod.Post)) {
<div class="modal-header">
<h2>Are you sure you want to delete?</h2>
</div>
<div class="modal-body">
<fieldset>
<div class="display-label">
<h3>
@Html.HiddenFor(model => model.server.ID)
@Html.HiddenFor(model => model.ID)
@Html.DisplayNameFor(model => model.Name):
@Html.DisplayFor(model => model.Name)
</h3>
</div>
<div class="display-label">
<h5>
@Html.DisplayNameFor(model => model.Registrar):
@Html.DisplayFor(model => model.Registrar)
</h5>
</div>
<div class="display-label">
<h5>
@Html.DisplayNameFor(model => model.PrimaryDNS):
@Html.DisplayFor(model => model.PrimaryDNS)
</h5>
</div>
<div class ="display-label">
<h5>
@Html.DisplayNameFor(model => model.SecondaryDNS):
@Html.DisplayFor(model => model.SecondaryDNS)
</h5>
</div>
</fieldset>
</div>
<div class="modal-footer">
<a class="btn" href="">Cancel</a>
<input class="btn btn-danger" type ="submit" value="Delete" />
</div>
}
これは、ドメインの削除リンクがある詳細ページにあります。
<div class="modal fade" id="deleteDomain-modal"></div>
<script type="text/javascript">
$(function () {
$(".deleteDomain").click(function () {
$.ajax({
url: "/Client/DeleteDomain",
type: "GET",
data: {id: $(this).attr('id')},
dataType: "html",
success: function(e)
{
$("#deleteDomain-modal").html(e);
}
});
$("#deleteDomain-modal").modal();
});
});
</script>
そして最後にクライアントコントローラーで
public ActionResult DeleteDomain(int id)
{
Domain domain = db.Domains.Find(id);
if (domain == null)
{
HttpNotFound();
}
return PartialView(domain);
}
[HttpPost, ActionName("DeleteDomain")]
public ActionResult DeleteDomainConfirmed(int id)
{
Domain domain = db.Domains.Find(id);
Server server = db.Servers.Find(id);
db.Domains.Remove(domain);
db.SaveChanges();
db.Servers.Remove(server);
db.SaveChanges();
LogDeleteDomain(domain, server);
return RedirectToAction("Index");
}