2

我不确定这是否是一种常见情况,但我在 Google 上找不到任何关于如何执行此操作的信息。

在我的模型中,我有一个字符串属性,其中包含外部网站的整个 html。我想在我的页面上显示这个 html 以显示整个网页,以及页面顶部的一些其他控件。

例如,考虑我在页面顶部有一个带有搜索框的 div。我想在该框中输入一个 url 并将其显示在下面的 div 中。我后面的代码将网页标记检索为字符串。

注意:似乎有使用 iFrame 的解决方案,但我不想传递 URL。我想将 html 作为字符串检索并以这种方式显示。

谢谢。

4

2 回答 2

2

获取字符串(通过 jquery 的 $.get 之类的东西)。将其设置为要在其中显示页面的 div 的 innerHTML,类似于

$("#divFoo")[0].innerHTML = "<div>Your <strong>HTML</strong> string</div>";
于 2013-01-30T03:04:29.287 回答
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 导航到正在设置的 url(以 /Home/Search?url= http://google.com为例),您返回自己的原始 html 页面/字符串而不是实际网站。

该表单是一个安全网,可能不需要,但是如果出于某种原因禁用了 javascript,该表单将发布到 /Home/Page?url= http://google.com,其中返回的视图将设置 iframe,因此将从我们的 Search 操作中获取 url。

于 2013-01-30T04:44:18.743 回答