我不确定这是否是一种常见情况,但我在Google上找不到任何关于如何执行此操作的内容。
在我的模型中,我有一个字符串属性,其中包含外部网站的整个html。我想在我的页面上显示这个html,以显示整个网页,以及页面顶部的一些其他控件。
例如,假设我在页面顶部有一个带有搜索框的div。我想在该框中输入一个url并将其显示在下面的div中。我的代码将网页标记检索为字符串。
注意:似乎有使用iFrame的解决方案,但我不希望传递URL。我想将html作为字符串检索并以这种方式显示。
感谢。
答案 0 :(得分:2)
获取字符串(通过jquery的$ .get之类的东西)。将其设置为要显示页面的div的innerHTML,类似
$("#divFoo")[0].innerHTML = "<div>Your <strong>HTML</strong> string</div>";
答案 1 :(得分:2)
我认为你必须使用iFrame - 但这并不全是坏事!你仍然可以显示你的字符串。
控制器将如下所示:
public class HomeController : Controller
{
//
// GET: /Home/
//Initial landing page
public ActionResult Index()
{
return View("");
}
//for full postbacks, sets the iframes src on the index view
public ActionResult Page(String url)
{
String myurl = "/Home/Search?url=" + url;
return View("Index", model: myurl);
}
//for the iframes src attribute
public ActionResult Search(String url)
{
//replace pageContent with your html string
String pageContent = "<html><head><title>this is the title</title></head><body>this is the body</body></html>";
return Content(pageContent);
}
}
索引将是您的登陆或“搜索”页面, 如果不支持javascript,页面将是您的表单发布到的位置, 搜索将指向您的iFrame。
动作:
@model String
@{
ViewBag.Title = "URLer";
}
<script type="text/javascript">
$(document).ready(function () {
$('#searchForm').submit(function (e) {
e.preventDefault();
$('#page').attr('src', '/Home/Search?url=' + $('#url').val());
return false;
});
});
</script>
<div>
@using (Html.BeginForm("Page", "Home", FormMethod.Get, new { id = "searchForm" }))
{
<input id="url" name="url" type="text" />
<input id="Search" type="submit" value="Search" />
}
</div>
<iframe id="page" src="@Model" width="100%" height="500">
</iframe>
这显示了一个搜索框和提交按钮,使用jQuery表单提交将iframe的src属性设置为搜索操作,即“/ Home / Search”并添加url文本框的值作为查询字符串的一部分,这将触发iFrame导航到正在设置的网址(/ Home / Search?url = http://google.com作为示例),在哪里返回您自己的原始html网页/字符串而不是实际网站。< / p>
表单是一个安全网,可能不需要,但是如果由于某种原因javascript被禁用,表单将发布到/ Home / Page?url = http://google.com,其中返回的视图将设置iframe ,因此将从我们的搜索操作中获取网址。