我使用 AJAX 来做到这一点。您对典型的 twitter 模态模板 html 有自己的看法:
<div class="container">
<!-- Modal -->
<div class="modal fade" id="LocationNumberModal" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">
×
</button>
<h4 class="modal-title">
Serial Numbers
</h4>
</div>
<div class="modal-body">
<span id="test"></span>
<p>Some text in the modal.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">
Close
</button>
</div>
</div>
</div>
</div>
</div>
然后你有你的控制器方法,我使用 JSON 并有一个自定义类,它将视图呈现为字符串。我这样做是为了我可以通过一个 ajax 调用在屏幕上执行多个 ajax 更新。此处参考:示例,但如果您只是进行一次调用,则可以在返回时使用 PartialViewResult/ActionResult。我将使用 JSON 显示它..
和控制器中的 JSON 方法:
public JsonResult LocationNumberModal(string partNumber = "")
{
//Business Layer/DAL to get information
return Json(new {
LocationModal = ViewUtility.RenderRazorViewToString(this.ControllerContext, "LocationNumberModal.cshtml", new SomeModelObject())
},
JsonRequestBehavior.AllowGet
);
}
然后,在使用您的模式的视图中:您可以将 AJAX 打包在您的部分中并调用 @{Html.RenderPartial... 或者您可以使用带有 div 的占位符:
<div id="LocationNumberModalContainer"></div>
然后你的ajax:
function LocationNumberModal() {
var partNumber = "1234";
var src = '@Url.Action("LocationNumberModal", "Home", new { area = "Part" })'
+ '?partNumber='' + partNumber;
$.ajax({
type: "GET",
url: src,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
$("#LocationNumberModalContainer").html(data.LocationModal);
$('#LocationNumberModal').modal('show');
}
});
};
然后按钮到您的模态:
<button type="button" id="GetLocBtn" class="btn btn-default" onclick="LocationNumberModal()">Get</button>