【问题标题】:Jquery Modal Dialog displaying MVC3 partial view - works first click only显示 MVC3 部分视图的 Jquery 模态对话框 - 仅适用于第一次单击
【发布时间】:2011-06-09 17:15:55
【问题描述】:
 public ActionResult MeanQ(int id)
{            
    Access access= db.Access.Find(id);
    return PartialView("_MeanQPartial", access);
}

上面代码中呈现的部分视图显示在对话框模式(Jquery)中...在 Jquery 模式对话框中显示部分视图的链接(onclick)适用于第一次点击。关闭该对话框并再次单击该链接后,部分视图不会按预期在弹出表单中打开。它在浏览器中作为新页面打开。如何使弹出的模式对话框链接每次都以相同的方式工作?

Javascript 代码如下(Jquery 模态对话框):

<script type="text/javascript">
$(document).ready(function () {
    //initialize the dialog
    $("#result").dialog({ width: 400, resizable: true, position: 'center', title: 'Access info', autoOpen: false,
        buttons: { "Ok": function () { $(this).dialog("close"); } }
    });
});

$(function () {
    $('#modal').click(function () {
        //load the content from this.href, then turn it into a dialog.

        $('#result').load(this.href).dialog('open');
        return false;
    });
});

触发模态对话框的HTML链接:

@Html.ActionLink("PopUp", "MeanQ", new { id = item.AccID }, new { id = "modal" })

【问题讨论】:

  • 你需要显示 jquery/javascript 代码以及 html,否则很难真正发现问题所在。
  • ActionResult 不控制是否在新窗口中显示,浏览器通过 script/markup/browser-config 控制。
  • 请参阅我对 js 代码的原始帖子的编辑。谢谢
  • 你的&lt;html/&gt;是什么样的?
  • 它只是一个动作链接:@Html.ActionLink("PopUp", "MeanQ", new { id = item.AccID }, new { id = "modal" })

标签: jquery asp.net-mvc asp.net-mvc-3 partial-views


【解决方案1】:

最近我还遇到了一个更棘手的问题,我想同时使用部分和完整的剃刀视图。我按照下面的文章来实现我的模态对话框。而且效果很好。

http://www.matthidinger.com/archive/2011/02/22/Progressive-enhancement-tutorial-with-ASP-NET-MVC-3-and-jQuery.aspx

【讨论】:

    【解决方案2】:

    在不了解您的 JavaScript 的情况下,我猜您在加载 PartialView 时以某种方式替换了 &lt;a/&gt; 元素,因为您提到 &lt;a/&gt; 在加载模式后执行默认操作。

    例如

    $("#someA").click(function(){
      //loads the modal and replaces #someA
    });
    

    尝试使用.live()

    $("#someA").live("click", function(){
      //loads the modal and replaces #someA, but still works since you used live()
    });
    

    如果元素有一个共同的父元素就更好了,你可以使用.delegate()

    $("#someParentOfA").delegate("#someA", "click", function(){
    
    });
    

    【讨论】:

    • 谢谢。请参阅对我的原始帖子的编辑 - 用于 JS 代码。我试过你建议的“.live”,它没有用。
    • 感谢 Charlino 和 Patricia 的帮助。这个问题已经解决了。 stackoverflow.com/questions/6333851/…
    【解决方案3】:

    您使用的是 MVC3 吗?如果您返回“PartialViewResult”,而不是返回“ActionResult”,它可能会有所帮助。

    【讨论】:

    猜你喜欢
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多