我想使用在另一个视图(例如SaveRecord.chtml)中定义的引导程序显示一个弹出窗口。是否有任何方法可以从任何视图访问引导对话框(例如Registration.cshtml)喜欢在下方给出
$(document).ready(function () {
$('/BootStrap/SaveRecord/.mymodal').modal('show');
}
其中"mymodal"是下方给定的引导程序id
您真的不能访问这样的元素,因为jQuery本身需要这些元素存在于DOM中才能访问它们。
创建局部视图并根据需要加载
您可以考虑创建一个部分视图,其中包含特定Modal的所有必要标记,然后当您需要访问它时,只需通过AJAX调用将其加载到DOM中(如果它还不存在),然后显示它:
$(function(){
// Load your Partial View (assumes a Controller Action will route to it)
$.get('@Url.Action("GetYourPartialView","YourController")', function(html){
// Insert this element into the DOM
$('body').append(html);
// At this point it should exist, so load it
$('.myModal').modal('show');
});
});
这将假设存在一个控制器操作,它将指向包含您的模态(并且仅包含您的模式)的特定部分视图:
public ActionResult GetYourPartialView()
{
return View("YourPartialViewName");
}
考虑使用布局
您可以考虑使用的另一个解决方案是定义您的各种模式"模板",您可以在布局级别的整个解决方案中使用这些模板,这样任何依赖这些模板的页面都可以访问它们。
您可以使用局部视图。
- 在Views/Shared文件夹下创建部分视图_MyModal.cshtml
- 在每个要使用它的视图中:
@Html.Partial("~/Views/Shared/MyModal.cshtml") - 在您的javascript文件上:$('#mymodal').modal('sow')
以下是步骤:
1.使您的引导程序弹出视图成为部分视图
2.在常规视图中,添加一个div,该div将具有模式内容
<div id="divModalContent">
</div>
3.在您的常规视图中,添加具有onclick功能的html按钮
<input type="button" class="btn btn-default" value="{Your Text}" onclick="LoadSaveRecordModal()" />
4.你的JS:
function LoadSaveRecordModal()
{
$.ajax(
{
type: 'POST',
url: '{your url}',
data: data, //if required
success: function (result) {
$("#divModalContent").html(result); //load your modal content inside the div
$("#mymodal").modal('show'); //show the popup
},
failure: function (ex) {}
}
);
}
4.你的行动方法
public ActionResult GetSaveRecordModal(//get data if its post request)
{
//code
return PartialView("SaveRecord");
}