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 发布请求并将所有内容发布到一个控制器(比如预览)。这里在会话中保存值。返回任何标志作为响应。
  2. 请求 1 成功后,打开新页面(例如预览),该页面将显示会话中的所有值。此页面 UI 将包含所有已发布的值和一个提交按钮。
  3. 单击提交后,它实际上会发布值。

您可以对两个 POST 请求使用相同的控制器,您的标志 IsPreview 将位于 AJAX 请求的标头中,并且不适用于预览页面。这个解决方案似乎需要时间。

于 2015-02-04T01:26:34.347 回答