Всплывающее окно бритвы MVC 3 - PullRequest
5 голосов
/ 02 августа 2011

Мне нужно открыть новое всплывающее окно при нажатии кнопки в представлении. Новое окно должно быть перенаправлено на конкретный метод действия в конкретном контроллере. Мне также нужно предоставить атрибуты для размера нового всплывающего окна. Я пробовал следующий код:

<input type="button" name = "ClickMe" Value="ClickMe" onclick= "javascript:window.open('/Home/Create/','Customer Search',height='window.screen.height - 100', width='200',left='window.screen.width - 250' ,top='10',status='no',toobar='no',resizable='yes',scrollbars='yes')"/>

При нажатии кнопки ничего не происходит. Я получаю следующую ошибку Javascript:

Линия: 19
Char: 1
Ошибка: неверный аргумент.
Код: 0

Когда я проверяю ViewSource отображаемого HTML-кода, я нахожу строку, которая отображает кнопку. Я использую Windows Vista с IE 7. Я работаю над MVC 3 с Razor Engine в VS 2010

Ответы [ 3 ]

14 голосов
/ 02 августа 2011

респект HTML. Уважайте JavaScript. Уважайте фреймворк, на котором вы пишете, который сделал два больших изменения (валидация и ajaxity) со 2-й версии до 3-й, чтобы применить более новый, современный принцип - Ненавязчивый Javascript . Вы могли бы исправить эту ошибку за меньшее время, потраченное на задание вопроса здесь, если бы вы следовали этому принципу (с помощью выделения синтаксиса javascript).

    <input type="button" id="ClickMe" name = "ClickMe" Value="ClickMe" />
...
    <script type="text/javascript">
            $(function () {
                $('#ClickMe').click(function () {
                   window.open('/Home/Create/', 'CustomerSearch', 'height=' + (window.screen.height - 100) + ',width=200,left=' + (window.screen.width - 250) + ',top=10,status=no,toolbar=no,resizable=yes,scrollbars=yes');
                });
            });
    </script>

И, как я обнаружил, это проблема с пробелом в имени окна в IE - «Поиск клиента». Если вы удалите это пространство - «CustomerSearch», оно тоже начнет работать в IE

5 голосов
/ 02 августа 2011

В предоставленном HTML есть некоторые причуды для символов ' в onclick. Попробуйте изменить следующее: добавлены разрывы строк для удобства чтения:

<input type="button"
       name="ClickMe"
       value="ClickMe"
       onclick="javascript:window.open('/Home/Create/',
                                       'Customer Search',
                                       'height=' + (window.screen.height - 100) + ',width=200,left=' + (window.screen.width - 250) + ',top=10,status=no,toolbar=no,resizable=yes,scrollbars=yes');"/>

Заметные изменения:

  • Третий аргумент window.open() - one Строка JavaScript со вставленными значениями из вычислений
  • У аргументов в строке конфигурации удалено '
  • toobar & rarr; toolbar.

На основании обновления Арчила кажется, что он ударил по гвоздю:

var windowObjectReference = window.open(strUrl, strWindowName[, strWindowFeatures]);

strWindowName
Это строка, которая просто называет новое окно. Такая строка может использоваться в качестве цели ссылок и форм, когда указан целевой атрибут элемента <a> или <form>. Этот строковый параметр не должен содержать пробелов. strWindowName не указывает заголовок нового окна. ( источник )

0 голосов
/ 19 июля 2012
<script type="text/javascript">
    //script for loading value to division
    $(function () {
        $('form').submit(function () {
            $.ajax({
                url: this.action, //you can redirect to your specific controller here..
                type: this.method,
                data: $(this).serialize(),
                success: function (result) {
                    $('#popUp').html(result);
                }
            });
            return false;
        });
    });
</script>

<script type="text/javascript">
    //Script for pop up dialog.
    $(function () {
        $('form').submit(function () {
            $("#popUp").dialog({
                modal: true,
                resizable: false
            });
        });
    });
</script>

<div id="popUp" >
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...