2011-08-02 12 views
5

ビュー内のボタンをクリックすると新しいポップアップウィンドウを開く必要があります。新しいウィンドウは、特定のコントローラ内の特定のアクションメソッドにリダイレクトする必要があります。私はまた、新しいポップアップウィンドウのサイズの属性を提供する必要があります。 私は次のコードをしようとしている:ボタンをクリックするだけでMVC 3 Razor PopUp Window

<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エラーが表示されます。私は、レンダリングされたHTMLのViewSourceをチェックすると

Line: 19
Char: 1
Error: Invalid argument.
Code: 0

、私はラインがボタンをレンダリングしている1であることがわかりました。 IE 7でWindows Vistaを使用しています。私はVS 2010のRazor Engineで作業中です

答えて

13

尊重のHTMLを。尊敬のjavascript。 2番目のバージョンから3番目の2つの大きな変更(バリデーションとajaxity)を行って、新しい、最新の原則 - Unobtrusive Javascriptを適用している、あなたが書いているフレームワークを尊重します。この原則に従えば、ここで質問をするのに費やす時間を短縮してエラーを修正できます(vs 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のウィンドウ名のスペースである「Customer Search」の問題です。そのスペースを削除すると、「CustomerSearch」もIEでの作業を開始します

+0

迅速な対応に感謝します。しかし、問題は続く。 – Vipul

+0

私の更新された回答を見る – archil

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()には挿入計算から値
  • 引数と1つの JavaScriptの文字列設定文字列内で'が削除されました
  • toobartoolbar

archil's updateに基づいて、彼が釘を打ったことが表示されます。

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

strWindowName
This is the string that just names the new window. Such string can be used to be the target of links and forms when the target attribute of an <a> element or of a <form> is specified. This string parameter should not contain any blank space. strWindowName does not specify the title of the new window. (source)

+0

お返事ありがとうございました。これは嫌いですが、 "scrollbars = yes"の直後に1つの "'"が欠落しています。是正した後も問題は解決しません。 他の提案はありますか? – Vipul

+0

@Vipul Ouh、そうです。それは今修正されましたが、私はarchilがウィンドウ名( 'CustomerSearch')で釘を打ったと信じています。 [MDNの['window.open'](https://developer.mozilla.org/ja/DOM/window.open):"この文字列パラメータに空白は入れてはいけません。 " – jensgram

+0

ありがとうございます。私は今2年前に新しいウィンドウを開くためにウィンドウ名を入力しなければならなかったことを覚えています。 – 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>