4

ユーザーが HTML をシステムに送信し、結果のページを「プレビュー」できるシステムに取り組んでいます。ユーザーによって送信された HTML は、ビュー内の HTML.Raw への呼び出しを介してページに提供され、他のデータと共にテーブルの一部として表示されます。単純な実装では、次のように表示されます。

...
    <td>
        <div>@Html.Raw(UserEnteredHTMLIsFetchedHere)</div>
    </td>
...

私が抱えている問題は、ユーザーが入力した HTML にエラーがないことが保証されていないことです (実際にはそうではありません)。ユーザーが HTML に閉じられていない div タグを入力してプレビューすると、Html.Raw によって返された閉じられていないタグがHtml.Raw 呼び出しの外側の /div で閉じられ、ページ全体で不適切なネストが作成されます。

閉じられていないタグがページの残りの部分に干渉しないように、Html.Raw の出力を隔離する方法を探しています。

これを実現するために iframe タグを使用しようとしましたが (src をエンコードされた HTML に設定)、CSS ではうまくいきませんでした。可能であれば、ページの既存の CSS を隔離された HTML 内に保持したいと考えています。

これが Html.Raw の使用方法であるかどうかはわかりませんが、これは私が作成するのではなく変更する実装であり、可能な限り元の実装を維持したいと考えています。

4

3 に答える 3

1

理解しておくべき重要なことは、CMS システムを作成していない限り、これは決して良い考えではないということです ( https://stackoverflow.com/a/4146470/467198の私の回答を参照してください) 。

はい、CSS は iframe では機能しませんが、親ページで行ったのと同じ CSS を iframe に挿入できます。ただし、明らかに親ページのレイアウトは iframe のコンテンツに従いません (たとえば、iframe に大きな div がある場合、親ページは iframe を大きくしません)。

于 2013-09-20T19:09:49.567 に答える
0

ビューに影響を与えることなく、ユーザーが入力した HTML を表示する最善の方法は、IFrame を使用することです。Javascript を使用して、IFrame のコンテンツを手動で設定できます。

于 2013-09-20T17:26:46.617 に答える