ダイアログ ボックスを使用する作成機能の部分ビューがあり、インデックス ページ内の特定のボタンをクリックするとポップアップが表示されます (インデックス ページと作成ページのコントローラーは異なります)。インデックスから create にパラメーターを渡してボタンをクリックしてダイアログ ボックスを表示しようとすると、部分ビューが表示されません。しかし、パラメーターを削除すると、インデックス ページからパラメーターが必要なため、そのパラメーターのポスト アクションは機能しませんが、ダイアログ ボックスには部分的なビューが表示されます。
以下は、パラメーターを渡すインデックスの行と、ダイアログ ボックスを表示するために使用されるボタンです。
<input type="button" class="btnPartial" />
<div id="@item.RoomCode" style ="visibility:hidden;">@Url.Action("CallPartial", "RoomReservation", new { roomId = item.Id })</div>
</div>
以下は、インデックス ページからパラメーターを受け取り、部分ビューを表示するコントローラーです。
public ActionResult CallPartial(int roomId) {
var model = _db.Rooms.Single(r => r.Id == roomId);
ViewBag.roomCode = model.RoomCode;
return PartialView("_Create", model.Customers );
}
部分的なビューは次のとおりです。
@model ROOMRESERVATION.CORE.Model.RoomReservation
@{
ViewBag.Title = "Create";
}
<h3>@ViewBag.roomCode</h3>
@Html.DisplayFor(model => model.Rooms.RoomName)
<h2>Create</h2>
@using (Html.BeginForm("Create", "RoomReservation", new {roomid = model.Rooms.Id}))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>RoomReservation</legend>
@Html.Partial("_CreateEdit", Model)
<div class="editor-label">
@Html.LabelFor(model => model.Remarks)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Remarks)
@Html.ValidationMessageFor(model => model.Remarks)
</div>
<p>
<input id="btnReserve" type="submit" value="Create" />
</p>
</fieldset>
}
最後に、JS:
$('.btnPartial').click(function () {
var url = $(this).parent("div").children("div").text();
$('#dialog').load(url,
function (response, status, xhr) {
$('#dialog').dialog('open');
});
$("body").toggleClass("dialogIsOpen");
$("#dialogContainer").css("visibility", "visible");
});
他のコントローラーとビューがそれに応答するため、モデルはすべて問題ありません。作成にビューをまだ使用していたとき、パラメーターは機能し、プログラムはスムーズに実行されるため、問題は部分図とダイアログ ボックス。どんな助けでも感謝します、ありがとう:)
編集
ビューデータを使用して部分ビューに渡そうとしましたが、うまくいきましたが、そうする方法がもっとある場合は、何か方法を投稿してください:)。