【发布时间】:2012-12-01 14:36:04
【问题描述】:
我想构建一个允许在内部呈现视图的 API:
- iframe(常规视图)。
- 或作为 JS (document.write)。
开发人员有时会使用 Iframe,有时会使用脚本。
所以有一次你可以调用 iframe:
//will render <html><body><div>I am a div</div></body></html>
<iframe src="/page/mysqldata?mod=iframe"></iframe>
有一次我想将 html 作为 JS 获取
//will render document.write('<div>I am a div</div>');
<script src="/page/mysqldata?mod=js"></script>
您知道如何设置它的教程吗?
顺便说一句,我的观点很复杂,有很多@Html 电话与RenderSections 和@Html.Partial 电话。
底线是我想为 html 提供 2 种不同的方法,iframe 和脚本,但我想保留一个视图。
谢谢
【问题讨论】:
-
可以使用 AJAX 通过脚本检索 html。不清楚你想用 script vs iframe 做什么,或者是什么决定了使用哪种情况。 AJAX 可能是答案
-
您是否尝试在控制器中将其公开为 2 个不同的操作? On action 将返回一个 jsonresult 另一个将返回一个 viewresult。
-
@Ikaso - 谢谢,但是如何将 html 视图呈现为 json?你可以发布一个例子吗?这:
return Json(View(viewModel),JsonRequestBehavior.AllowGet);将不起作用... -
@charlietfl - 我已经编辑了问题和示例代码,希望对您有所帮助。谢谢
-
@SexyMF - 您不会将视图呈现为 Json。一种方法返回 JsonResult,另一种方法呈现 ViewResult。如果你想实现最大的重用,你可以让这两个方法调用返回相同视图模型的第三个私有方法。在返回视图的方法上,您将视图模型作为模型发送。在返回 JsonResult 的方法上,您将视图模型发送到 JsonResult,以便将其序列化为 Json。
标签: javascript asp.net-mvc-3 views render