Как показать содержимое ViewData в окне при обратной передаче? - PullRequest
2 голосов
/ 23 февраля 2010

Я хочу показать содержимое 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();
    }

Я хочу показать содержимое ViewData ["sample"] с помощью Window.open (). Но этот код не может показать мне желаемый результат. Может кто-нибудь сказать, пожалуйста, как мне этого добиться?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 23 февраля 2010

div не поддерживает атрибут onload.

вместо этого переместите свой код в тег body.

<body onload = "poponload('<%=ViewData["sample"].ToString()%>')">
0 голосов
/ 23 февраля 2010

Я бы рекомендовал использовать библиотеку JavaScript, такую ​​как JQuery. Есть много модальных всплывающих плагинов, которые делают подобные вещи очень простыми.

Один из моих любимых - Simple Modal от Eric Martin. Ниже приведен пример того, как это можно использовать для отображения ViewData.

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

Edit:

Чтобы использовать 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

Как узнать, когда мое окно заблокировано блокировщиком всплывающих окон? Со встроенными блокировщиками всплывающих окон Mozilla / Firefox и Internet Explorer 6 SP2 вы должны проверить возвращаемое значение window.open (): оно будет нулевым, если окно не было разрешено открывать. Однако для большинства других блокировщиков всплывающих окон нет надежного способа.

Надеюсь, это поможет.

0 голосов
/ 23 февраля 2010

Работает ли 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>

Если вы немного лучше объясните, что происходит, вам будет проще найти решение. Я не могу запустить код здесь, поэтому требуется дополнительная информация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...