2

これが一般的なシナリオかどうかはわかりませんが、これを行う方法について Google で何も見つかりませんでした。

私のモデルには、外部 Web サイトの html 全体を含む文字列プロパティがあります。この html を自分のページに表示して、ページの上部にある他のいくつかのコントロールと共に Web ページ全体を表示したいと考えています。

たとえば、ページの上部に検索ボックスのある div があるとします。そのボックスにURLを入力して、下のdivに表示したい。私の分離コードは、Web ページのマークアップを文字列として取得します。

注: iFrame を使用した解決策があるようですが、URL を渡したくありません。html を文字列として取得し、そのように表示したいと考えています。

ありがとう。

4

2 に答える 2

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)に移動します。ここで、実際のWebサイトではなく独自の生のhtmlページ/文字列を返します。

フォームはセーフティネットであり、おそらく必要ありませんが、何らかの理由でjavascriptが無効になっている場合、フォームは/ Home / Page?url = http://google.comに投稿され、返されたビューにiframeが設定されます。したがって、検索アクションからURLを取得します。

于 2013-01-30T04:44:18.743 に答える
2

文字列を取得します(jqueryの$ .getなどを使用)。ページを表示するdivのinnerHTMLとして設定します。

$("#divFoo")[0].innerHTML = "<div>Your <strong>HTML</strong> string</div>";
于 2013-01-30T03:04:29.287 に答える