在div / MVC3中显示子网页

时间:2013-01-30 02:59:07

标签: html asp.net-mvc-3 iframe

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

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

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

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

感谢。

2 个答案:

答案 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 ,因此将从我们的搜索操作中获取网址。