3

私は.Net MVCが初めてで、クリックボタンでプレビューページを作成しようとしています.プレビューは、ページを送信するのではなく、新しいウィンドウに表示することです. ページに問題がなければ、送信します。Htmlにこれがあるとしましょう

<input class="btnText" id="PreviewURL" value="Preview" type="submit"/>

そしてJQueryではこれ

$('#PreviewURL').click(function () {$('.IsPreview').val(true);submitForm();window.open(this.href);});

しかし、変数 IsPreview=true を入れておらず (コントローラー部分でこの変数を使用するにはこれが必要です)、返されたものが新しいウィンドウで開かれません。

4

2 に答える 2

2

すべての要素と値を収集して読み取り専用にし、ダイアログボックスに表示します:)

<div id='infor'> <span>enter name:</span> 
    <input id="nametext" type="text" />
</div>
<div id='previewDiv'>&nbsp;</div>
<a href='#' id='opendialog'>click here to preview</a>

jquery

$("#opendialog").click(function () {

     var clonetext = $('#infor').clone(true);
     $('#previewDiv').html(clonetext);
     $('#previewDiv input').attr('readonly', 'readonly');
     $("#previewDiv").dialog("open");
     return false;
 });
 $("#previewDiv").dialog({
     autoOpen: false,
     open: function () {},
     show: "blind",
     hide: "explode"
 });

このデモのようなもの:ページのプレビュー

于 2013-01-22T12:09:48.460 に答える
1

最高のユーザー エクスペリエンスを実現するために、新しいウィンドウでプレビューを開かず、jQuery モーダル ダイアログを開くことをお勧めします。ダイアログに送信ボタンとキャンセルボタンを追加します。これは簡単で高速です。

それでも新しいウィンドウを開きたい場合、フローは次のようになります。

  1. ajax ポスト リクエストを作成し、すべてのコンテンツを 1 つのコントローラーにポストします (プレビューと言います)。ここでは、セッションで値を保持します。応答として任意のフラグを返します。
  2. リクエスト 1 が成功すると、セッションからのすべての値を表示する新しいページ (プレビューなど) を開きます。このページの UI には、投稿されたすべての値と [送信] ボタンがあります。
  3. 送信をクリックすると、実際に値が投稿されます。

両方の POST リクエストに同じコントローラーを使用できます。フラグ IsPreview は AJAX リクエストのヘッダーにあり、プレビュー ページでは使用できません。この解決策には時間がかかるようです。

于 2015-02-04T01:26:34.347 に答える