1

クライアントを格納するページを作成しています。クライアントは、ドメインと連絡先と仕事を持つことができます。各連絡先/ドメイン/ジョブには、編集/削除機能があります。

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");
    }
4

1 に答える 1

0

同様の問題があったと思います。その理由は、パラメーター値が整数ではなく文字列として送信されたためです。値をキャストする必要がありました。したがって、スクリプト コードで次の行を変更してみてください。

data: {id: $(this).attr('id')},

に:

data: {id: parseInt($(this).attr('id'))},

それは私の問題を解決しました。

于 2013-03-30T10:30:48.837 に答える