我有一个创建函数的部分视图,该函数使用一个对话框,每当我单击索引页面中的特定按钮时都会弹出(索引和创建页面的控制器不同)。每当我尝试将参数从索引传递到创建并单击按钮以显示对话框时,它都不会显示局部视图。但是当我删除参数时,对话框会显示部分视图,尽管它的发布操作不起作用,因为我需要索引页面中的参数。
以下是传递参数的索引中的行和用于显示对话框的按钮:
<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");
});
它的模型都可以,因为其他控制器和视图会响应它,并且当我仍在使用视图进行创建时,参数东西工作并且程序运行顺利,所以我有预感问题出在使用局部视图和对话框。任何帮助将不胜感激,谢谢:)
编辑
我尝试使用 viewdata 传递给局部视图并且它起作用了,但是如果有更多这样做的方法,这样做似乎很奇怪,请发布任何方法:)。