. net /预览表单结果/将视图呈现为字符串

本文关键字:字符串 视图 结果 表单 net | 更新日期: 2023-09-27 17:54:09

情况如下(使用MVC 2.0):

我正在尝试构建一个功能,允许用户预览他们对他们的个人资料/个人资料所做的更改,而无需首先提交他们的更改。用户填写一个表单,点击"预览"按钮,看看他们的更改是什么样子。一个困难是前端有一个不同的母版页,所以我们需要渲染整个视图,而不仅仅是一个控件。

我采用的方法是:

  1. 异步发送序列化表单到控制器动作
  2. 操作模型以充实未发布的集合等
  3. 返回前端视图,传递给它修改后的模型
  4. 捕获asynch方法的响应,将其包装在iframe中,并将其写入页面上的lightboxdiv

我正在使用的代码…控制器动作(BuildPreview方法只是稍微改变了模型)

    [HttpPost]
    [Authorize]
    public ActionResult PreviewProfile(PersonModel model)
    {
        return View("Person", PeopleService.BuildPreview(model));;
    }

HTML/Jquery的东西:

<script type="text/javascript">
$(document).ready(function () {
    $("#previewButton").click(function (e) {
        $.post("/PreviewProfile", $("#bioForm").serialize(), function (response) {
            $("#previewFrame").html(response);
            $("#holdMyPreview").modal({
                                overlayClose: true,
                                escClose: true,
                                autoResize: true,
                            }, "html");
        });
    });
});

模态方法只是一个基本的灯箱式的东西。

遇到两个问题:

  1. 编辑-删除这个,我不小心拉一个子控件
  2. iframe没有渲染html(也许是因为它是无效的b/c它缺少html/body/head标签?)。如果我只是把响应直接放到div中,没有iframe,它就能工作…Albiet使用错误的样式表。如果我试图将它插入iframe,它只是把它作为一个空页面,只有html,头部和正文标签显示。

任何想法吗?

山姆

PS:在MSDN论坛(http://forums.asp.net/t/1675995.aspx/1?Rendering+a+view+into+a+string+)上试过了,没有任何进展,我想看看SO是否有任何辉煌。

. net /预览表单结果/将视图呈现为字符串

所以,当你得到它时,只需按摩响应,添加缺失的html/body/head

$.post("/PreviewProfile", $("#bioForm").serialize(), function (response) {
            response = "<html><body>"+response+"</body></html>";
            $("#previewFrame").html(response);
            $("#holdMyPreview").modal({
                                overlayClose: true,
                                escClose: true,
                                autoResize: true,
                            }, "html");
        });