局部视图在传递参数时不显示
本文关键字:显示 参数 视图 局部 | 更新日期: 2023-09-27 18:13:55
我有一个创建函数的部分视图,它使用一个对话框,每当我单击索引页内的特定按钮时就会弹出(索引和创建页的控制器不同)。每当我尝试将参数从索引传递给create并单击按钮以显示对话框时,它都不会显示部分视图。但是当我删除参数时,对话框显示了部分视图,尽管post操作将不起作用,因为我需要索引页的参数。
下面是索引中传递参数和用来显示对话框的按钮的行:
<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");
});
它的模型都是OK的,因为其他控制器和视图响应它,当我仍然使用视图创建时,参数的东西工作,程序运行顺利,所以我有一种预感,问题是在部分视图和对话框的使用范围内。任何帮助都将不胜感激,谢谢:)
编辑
我尝试使用的viewdata传递到部分视图,它的工作,但这似乎是一个奇怪的事情这样做,如果有更多的方法这样做,请张贴任何方法:)。
试试:
<我>我>
$('.btnPartial').click(function () {
$(this).preventDefault();
var url = $(this).parent("div").children("div").text();
var dialogWindow = $('#dialog');
var opt = {
autoOpen: false,
resizable: false,
width: 'auto',
height: 'auto'
}
$.get(url, function (data) {
//
// Loads the data into the div
//
$(dialogWindow).html(data);
}).done(function () {
//
// Show the Dialog when all data comes from the server
//
$(dialogWindow).dialog(opt).dialog('open');
});
$("body").toggleClass("dialogIsOpen");
$("#dialogContainer").css("visibility", "visible");
});
希望这对你有帮助!
我只是认为,因为AJAX调用,您的对话框无法显示。那么,您为什么不认为我们可以使用AJAX调用并将部分放在一个HTML元素(如div)上,然后在完成后将该元素附加到对话框中呢?