. net /预览表单结果/将视图呈现为字符串
本文关键字:字符串 视图 结果 表单 net | 更新日期: 2023-09-27 17:54:09
情况如下(使用MVC 2.0):
我正在尝试构建一个功能,允许用户预览他们对他们的个人资料/个人资料所做的更改,而无需首先提交他们的更改。用户填写一个表单,点击"预览"按钮,看看他们的更改是什么样子。一个困难是前端有一个不同的母版页,所以我们需要渲染整个视图,而不仅仅是一个控件。
我采用的方法是:
- 异步发送序列化表单到控制器动作
- 操作模型以充实未发布的集合等
- 返回前端视图,传递给它修改后的模型
- 捕获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");
});
});
});
模态方法只是一个基本的灯箱式的东西。
遇到两个问题:
- 编辑-删除这个,我不小心拉一个子控件 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是否有任何辉煌。
所以,当你得到它时,只需按摩响应,添加缺失的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");
});