如何从MVC中的任何视图访问引导程序



我想使用在另一个视图(例如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");
}

相关内容

最新更新