MVC 3 Razor弹出窗口

5

我需要在视图中的按钮点击时打开一个新的弹出窗口。新窗口应该重定向到特定控制器中的特定操作方法。我还需要为新弹出窗口的大小提供属性。

我一直在尝试以下代码:

<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
字符:1
错误:无效参数。
代码:0

当我检查渲染的HTML的ViewSource时,我发现该行正在呈现按钮。我正在使用带有IE 7的Windows Vista。我正在使用VS 2010中的MVC 3和Razor Engine。
3个回答

14

尊重HTML。尊重JavaScript。尊重你正在编写的框架,它已经从第二版到第三版进行了两次重大改变(验证和Ajax性能),以应用更新、现代的原则 - 不显眼的JavaScript。如果你遵循这个原则,结合vs javascript synthax highlighting的帮助,你可以在比在这里提问花费的时间更短的时间内纠正错误。

    <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中窗口名称内有空格 - 'Customer Search'。如果你去掉那个空格 - 'CustomerSearch',它也会在IE中开始工作。


感谢您的迅速回复。但问题仍然存在。 - Vipul

5
提供的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() 的第三个参数是一个 JavaScript 字符串,其中插入了计算结果
  • 配置字符串中的参数已删除 '
  • toobartoolbar

根据archil 的更新,他似乎找到了解决方法:

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

strWindowName
这是一个仅用于命名新窗口的字符串。该字符串可以用作链接和表单的目标,当指定<a>元素或<form>的target属性时。此字符串参数不应包含任何空格。 strWindowName 不指定新窗口的标题。(来源


感谢您的及时回复。很抱歉要说这个,但是在“scrollbars=yes”之后立即缺少一个“'”。即使纠正了这个问题,问题仍然存在。还有其他建议吗? - Vipul
@Vipul Ouh,你说得对。现在它已经被修复了,但我相信archil用窗口名称(CustomerSearch)击中了钉子,参见MDN上的window.open:"此字符串参数不应包含任何空格"。 - jensgram
谢谢。我现在记得两年前做的一件事情,需要提供窗口名称才能打开新窗口。 - Vipul

0
<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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接