在将其提交给服务器MVC之前创建预览页面

时间:2013-01-22 11:28:33

标签: javascript asp.net-mvc jquery asp.net-mvc-4

我是.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(我需要这个在控制器部分中使用这个变量)并且返回的内容不会在新窗口中打开。

2 个答案:

答案 0 :(得分:1)

收集所有元素和值并将其设为只读,然后在对话框中显示它们:)

<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"
 });

有点像这个演示:Preview the Page

答案 1 :(得分:1)

为了获得最佳用户体验,我建议不要在新窗口中打开预览而是打开jQuery模式对话框。添加提交&amp;取消对话框中的按钮。这将是简单而快速的。

但如果你想打开新窗口,那么流程将如下:

  1. 创建一个ajax post请求并将所有内容发布到一个控制器(Say preview)。这里持有会话中的值。返回任何标志作为回应
  2. 请求1成功后,打开新页面(比如预览),它将显示会话中的所有值。此页面用户界面将包含所有发布的值和&amp;提交按钮。
  3. 点击提交后,它实际上会发布值。
  4. 您可以对两个POST请求使用相同的控制器,您的标志IsPreview将位于AJAX请求的标头中,并且不可用于预览页面。这个解决方案似乎需要时间。