如何在回发窗口中显示ViewData的内容?

时间:2010-02-23 09:01:27

标签: javascript asp.net-mvc

我想在模态窗口中显示ViewData的内容,该内容在我的情况下保存字符串。 为此,我在我看来使用以下代码。

<h2><%= Html.Encode(ViewData["Message"]) %></h2>
<p>
    To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
<form runat = "server">
<div onload = "poponload('<%=ViewData["sample"].ToString()%>')">
  <input type="submit" value="show" id="submitBtn"/>
</div>
<script type="text/javascript" language="Javascript">
  function poponload(msg) {
    alert(msg.toString().length);
    if (msg.toString().length > 0) {
      my_window = window.open("",
  "mywindow1", "status=1,width=350,height=150");
      my_window.document.write(msg.toString());
    }
  }
</script>
</form>

控制器包含以下简单的操作方法。

public ActionResult Index()
    {
      ViewData["Message"] = "Welcome to ASP.NET MVC!";
      return View();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Index(FormCollection collection)
    {
      ViewData["Message"] = "Welcome to ASP.NET MVC!";
      ViewData["sample"] = "My name is kaps";
      return View();
    }

我想使用Window.open()显示ViewData [“sample”]的内容。 但是这段代码无法向我显示所需的输出。任何人都可以告诉我如何实现它?

感谢。

3 个答案:

答案 0 :(得分:0)

javascript是否正在运行?如果没有,请尝试将该方法放在jquery ready方法中。

类似的东西:

<script src="/Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
   $(document).ready(function() {
      alert(msg.toString().length);
      if (msg.toString().length > 0) {
         my_window = window.open("",
           "mywindow1", "status=1,width=350,height=150");
           my_window.document.write(msg.toString());
   });
</script>

如果您更好地解释会发生什么,那么提供解决方案会更容易。我无法在此处运行代码,因此需要更多信息。

答案 1 :(得分:0)

divs不支持onload属性。

改为将代码移至body标签。

<body onload = "poponload('<%=ViewData["sample"].ToString()%>')">

答案 2 :(得分:0)

我建议使用jQuery这样的javascript库。有许多模态弹出插件使这类事情变得非常简单。

我最喜欢的一个是Eric Martin的Simple Modal。下面是一个如何用于显示ViewData的示例。

<script type="text/javascript" language="Javascript">
     $(document).ready(function() {
         $("#sample").modal();
     });        
</script>
<div id="sample"><%=ViewData["key"]%></div>

修改

使用window.open见下文。但是,这不是模式弹出窗口,因为它存在于新的浏览器窗口中。这很可能被弹出窗口阻止程序阻止,所以我不会这样做。

<script type="text/javascript" language="Javascript">
     $(document).ready(function() {
         var url = "<%= ViewData["key"].ToString() %>";
         window.open(url, "DescriptiveWindowName",
              "resizable=yes,scrollbars=yes,status=yes");
     });        
</script>

来自mozilla developer page

  

如何通过弹出窗口拦截器阻止我的窗口被阻止?   使用Mozilla / Firefox和Internet Explorer 6 SP2的内置弹出窗口阻止程序,您必须检查window.open()的返回值:如果不允许打开窗口,它将为null。然而,对于大多数其他弹出窗口拦截器,没有可靠的方法。

希望这有帮助。