2

Visual Studio を使用して MCV 3 でビデオ ゲーム Web サイトを作成していますが、ページからポップアップ ダイアログに ID を渡して、データベースから正しい開発者を表示する方法がわかりません。

ここで表示するページは、基本的な CRUD を実行するために使用する DeveloperManager ページです。実行しようとしている機能は、削除リンクをクリックして、Developer を削除する必要があることを確認するダイアログを開いてから削除することです。

私はすでに Page 呼び出し DeveloperManager/Delete を持っています。その時点でクリックするだけでパスitem.DeveloperIDされ、正しい開発者が表示され、確認時に削除されます。しかし、便宜上、そのページをダイアログ ボックスで開きたいと思います。

ご覧のとおり、[新規作成] ボタンをクリックすると、既にダイアログを開くことができましたが、それはパラメーターを使用せず、ページを開いて開発者を作成し、閉じます。

DeveloperManager ページのコードは次のとおりです。

@model IEnumerable<ReviewSite.Models.Developer>

@{
    ViewBag.Title = "Index";
}

<h2>Developers</h2>

<p>
    @Html.ActionLink("Games","Index","GameManager")
    @Html.ActionLink("Developers","Index","DeveloperManager")
    @Html.ActionLink("Publishers","Index","PublisherManager")
    @Html.ActionLink("Genres","Index","GenreManager")
</p>

<button id="createLink">Create New</button>

<table>
    <tr>
        <th>
            Developer Name
        </th>
        <th>
            Developer URL
        </th>
    </tr>

    @foreach (var item in Model) 
    {
        <tr>
            <td>
                <span class = "DeveloperName" >@Html.DisplayFor(modelItem => item.DeveloperName)</span>
            </td>
            <td>
                <span class = "DeveloperURL" >@Html.DisplayFor(modelItem => item.DeveloperURL)</span>
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { id = item.DeveloperID }, new { id = "editLink" }) |
                @Html.ActionLink("Details", "Details", new { id=item.DeveloperID }) |
                @Html.ActionLink("Delete", "Delete", new { id = item.DeveloperID}, new { @class = "deleteLink"})
            </td>
        </tr>
    }

    </table>


<script type="text/javascript">
    $(document).ready(function () {
        var $createDialog = $('<div></div>')
        .load('/DeveloperManager/Create')
        .dialog({
            autoOpen: false,
            title: 'Create Developer',
            modal: true
        });
        $('#createLink').click(function() {
            $createDialog.dialog('open');

            return false;
        });
    });
</script>

[削除] をクリックすると、このページがダイアログに呼び出されます

@model ReviewSite.Models.Developer

@{
ViewBag.Title = "Delete";
}

<h2>Delete</h2>

<p>
@Html.ActionLink("Games","Index","GameManager")
@Html.ActionLink("Developers","Index","DeveloperManager")
@Html.ActionLink("Publishers","Index","PublisherManager")
@Html.ActionLink("Genres","Index","GenreManager")
</p>

<h3>Are you sure you want to delete @Model.DeveloperName?</h3>
<fieldset>
<legend>Developer</legend>

<div class="display-label">Developer Name</div>
<div class="display-field">
    @Html.DisplayFor(model => model.DeveloperName)
</div>

<div class="display-label">DeveloperURL</div>
<div class="display-field">
    @Html.DisplayFor(model => model.DeveloperURL)
</div>

</fieldset>
@using (Html.BeginForm()) {
<p>
    <input type="submit" value="Delete" /> |
    @Html.ActionLink("Back to List", "Index")
</p>
}
4

1 に答える 1

0

http://jsfiddle.net/umwMU/6/

item.DeveloperID をリンクの属性に割り当てます。

@Html.ActionLink("Delete", "Delete", new { id = item.DeveloperID}, new { @class = "deleteLink", @devid = item.DeveloperID })

次に、ダイアログの html をロードするときに、クエリ文字列でその ID を使用します。

$('.deleteLink').click(function(evt) {
    evt.preventDefault();

    var developerID = $(this).attr("devid");

    var url = '/DeveloperManager/Delete/' + developerID;
    var $deleteDialog = $('#deleteDialog').load(url, function() {
        $deleteDialog.dialog({
            autoOpen: true,
            title: 'Delete Developer',
            modal: true
        });
    });
});
于 2012-06-30T16:23:14.353 に答える