【问题标题】:Create a popup that renders a partial view创建一个呈现局部视图的弹出窗口
【发布时间】:2013-11-11 00:40:49
【问题描述】:

过去几天我一直在为弹出窗口而苦苦挣扎。这里有一点信息。我对使用 JavaScript 很陌生,但我很想学习。首先here is an example of what I want to make.(按右上角的'Inloggen'使其弹出)CSS没问题。我使用bPopUp 和复制编辑站点中使用的代码而不是examples 来完成这项工作。

但无论如何,这里演示的站点是使用 php 制作的。但是我的老板决定改用 MVC 4 .NET。这不是一个真正的问题,除了它不再起作用的事实。我不知道为什么。

所以我决定重新开始,但我需要一点帮助。

我希望实现的是拥有一个可以重复使用并呈现局部视图的<div>

要触发它,我想要以下内容:

       <span class="popup_button white" data-popup="Some/view" data-height='200'>Inloggen</span>

这可能是其他标签而不是 span 和 Id 可以用来代替 class 来定义它是一个弹出触发器。 (当然也欢迎任何其他解决方案)。我想使用 data-popup 属性来指定触发时要渲染的局部视图,并使用 data-height 属性来指定弹出内容的高度。

谁能告诉我如何达到这个目标?我知道要问的可能很多,但欢迎提出每一个建议。由于我对 JavaScript 缺乏经验,我更喜欢代码示例,但我很乐意接受任何架构建议。

提前谢谢你们:D

【问题讨论】:

  • 众多 modal 支持集成 ajax 内容...继续搜索。无需重新发明轮子即可选择很多
  • @charlietfl 我已经做了很多搜索,但我找不到我想要的东西,或者我没有认出它是我想要的东西。因此,如果您有任何建议,请提供帮助。
  • 搜索开源插件可能会令人沮丧,而且会耗费大量时间。但是,如果您对 javascript 非常陌生,那么是否值得花时间。在 jfiddle.net 中创建一个演示您到目前为止所拥有的内容也很有帮助
  • 使用 ajax 回调到控制器。在这里查看我的答案stackoverflow.com/questions/19126058/…。这将使用部分填充您的 div,您可以在其上运行覆盖。如果您有任何问题,请告诉我
  • @MattBodily 谢谢你的回答,但老实说,我不知道如何处理那段代码以及它的作用。所以一些额外的解释会很有帮助。

标签: javascript asp.net-mvc-4 razor popup


【解决方案1】:
$('#my-button').click(function () { 
    var BaseUrl = "/Popup/" + $('#my-button').data("popup"); 
    $.ajax({
        url: BaseUrl,
        type: "POST",
        data: { Id: $('.Id').val() }
        cache: false,
        async: true,
        success: function (result) {
            $(".content").html(result);
            //There are different ways to do the pop up.  you mentioned you had the popup working.  trigger it here
            $('#popup').fadeIn("slow"); 
            $('.fader').fadeIn("slow"); 
        }
    });
});

然后在你的控制器中

[HttpPost]
public PartialViewResult Action(int Id){
    //populate a model
    return PartialView("_PartialViewName", model);
}

如果您还有其他问题,请告诉我。

【讨论】:

  • 谢谢大佬,我马上试试。实际上,弹出窗口现在将 iframe 插入到 .Content div 中。所以我想我还需要这样做吗? url:"@(Url.Action("Action", "Controller")", 线路的工作是什么?
  • iframe 有其用途,但据我所知,通常应避免使用。在 Url.Action 中,将那些替换为您的操作和控制器名称。这将对控制器进行异步调用,这将返回一个局部视图,在我的代码中将插入一个 div 中,然后您可以在
  • 好的,我实际上是按照 bpopup 示例开始的,这就是我到目前为止所得到的jsfiddle.net/24A9b/7713>。但即使这适用于 JSfiddle,但不适用于我的项目。
  • &lt;script src="/Scripts/jquery.easing.1.3.js"&gt;&lt;/script&gt; &lt;script src="/Scripts/scripting.min.js"&gt;&lt;/script&gt; &lt;script src="/Scripts/jquery-1.10.2.js"&gt;&lt;/script&gt; &lt;script src="/Scripts/jquery-1.7.1.js"&gt;&lt;/script&gt; 这些是我的导入
  • 你的 jsfiddle 给出了 404。我的代码会为你工作。您应该查看 jquery 对话框或覆盖。我们为外观和实现选择了叠加层。在这种情况下,在我的代码中设置 div 的 html,然后执行 overlay.load()
猜你喜欢
  • 1970-01-01
  • 2015-07-10
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
相关资源
最近更新 更多