1

概要

ASP.NET MVC3 で iFrame にスタイルシートを挿入または定義する方法を理解しようとしています。上記のトピックに関する既存のスレッドを確認しましたが、私のケースに適したものはありません。aspx で .CSHTML ページをレンダリングするユーザー コントロール (ParitalShimViewControl) を定義するソリューションが 1 つあります。そのソリューションのdllを使用して、別のソリューション(メインフレームワークがある場所)で参照し、メインソリューションに統合します。すべての css、js ファイルは、メイン ソリューションにのみ保持されます。

問題

私がしていることは、いくつかの機能 (コントローラー、ビュー、モデルの作成) を定義し、PartialShimControl を使用してレンダリングし、aspx ページの 1 つのメイン ソリューションにマップすることです。ここでは、iFrame を使用してクロスドメイン サービスを呼び出し、結果を .CSHTML ファイル (つまりビュー) にレンダリングする必要がありますが、スタイルシートを使用して結果を適切にフォーマットする必要があり、残念ながらスタイルシートを参照できません。メイン ソリューションに配置されているため、ビューに表示されます。

質問

要件が明確であることを願っています。メイン ソリューションまたは可能な方法で iFrame からこれらの css を参照するにはどうすればよいですか?

混乱しすぎないように願っています:(

コード:

    <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPages/X.master"
    AutoEventWireup="true" CodeBehind="X.aspx.cs" Inherits="Online.Web.Pages.X" %>
    <%@ Register Assembly="Online.CommonFramework" Namespace="Online.CommonFramework.BaseClasses"
    TagPrefix="CFBase" %>
    <%@ Register Src="~/UserControls/Shims/PartialViewShimControl.ascx" TagName="PartialViewShim" TagPrefix="UC" %>
    <%@ Register Assembly="Online.Web" Namespace="Online.Web.ProviderWebParts.DashBoard"
    TagPrefix="DashBoardWebParts" %>
    <%@ Register Assembly="Online.Web" Namespace="Online.Web.WebParts"
    TagPrefix="WebParts" %>
    <asp:Content ID="HeadContent" runat="server" ContentPlaceHolderID="Head">
    <link href="/Content/css/Core.css" rel="stylesheet" type="text/css" />
    <link href="/Content/css/Home.css" rel="stylesheet" type="text/css" />
    <link href="/Content/css/Pods.css" rel="stylesheet" type="text/css" />
    <%--<link href="/Pages/CSS/layoutHome.css" rel="stylesheet" type="text/css" />
    <link href="/Pages/CSS/Master0.css" rel="stylesheet" type="text/css" />
    <link href="/Pages/CSS/compNewLexis0.css" rel="stylesheet" type="text/css" />
    <link href="/Pages/CSS/Search0.css" rel="stylesheet" type="text/css" />--%>
   </asp:Content>
   <asp:Content ID="MedLitBodyContent" ContentPlaceHolderID="LandingBody" runat="server">
    <%--<script type="text/javascript" src="JS/api/N.js"></script>
    <script type="text/javascript" src="JS/api/Utils.js"></script>
    <script type="text/javascript" src="JS/apiWebStorage.js"></script>
    <script type="text/javascript" src="JS/vendor/VendorMaster0.js"></script>
    <script src="JS/api/SearchResults.js" type="text/javascript"></script>
    <script src="JS/vendor/backbone.js" type="text/javascript"></script>
    <script src="JS/vendor/handlebars.js" type="text/javascript"></script>
    <script src="JS/vendor/jquery-1.7.1.js" type="text/javascript"></script>
    <script src="JS/vendor/underscore.js" type="text/javascript"></script>--%>
    <script type="text/javascript" src="/MedLit/Content/js/LA.MedLit.Core.js"></script>
    <script type="text/javascript" src="/MedLit/Content/js/LA.MedLit.MedicalResearch.js">    
   </script>
    <script type="text/javascript" src="/MedLit/Content/js/LA.MedLit.CaseValueAssessment.js"></script>
    <script type="text/javascript" src="/X/Content/js/L.X.BrowseTopics.js">  
   </script>
   <script type="text/javascript" src="/X/Content/js/L.X.ToPDF.js"></script>
   <script type="text/javascript">
        $LAB
        .script('/JS/vendor/VendorMaster1.js')
        .script('/JS/api/N.Advance.Ajax.js').wait()
        .script('/JS/api/N.Advance.WebStorage.PageData.js')
        .script('/JS/api/N.Advance.Popup.js')
        .script('/JS/api/N.Advance.Events.js')
        .script('/JS/api/N.Advance.UI.js')
        .script('/JS/api/N.Advance.Transactional.js')
        .script('/JS/api/N.Advance.Middleware.js')
        .script('/JS/api/N.Advance.Ready.js')
        .wait(function () {
            $(LN.Advance.Ready.init);
        });            
    </script>
    <asp:ProxyWebPartManager ID="WProxyManager" runat="server">
        <StaticConnections>
            <asp:WebPartConnection ID="DashBoardWPC" ProviderID="DashBoardTabWP" ProviderConnectionPointID="TabWebPart"
                ConsumerID="DashBoardPageLogicWP" ConsumerConnectionPointID="TabSystem" />
            <asp:WebPartConnection ID="TabsToState" ProviderID="DashBoardTabWP" ProviderConnectionPointID="TabWebPart"
                ConsumerID="dashBoardStateProvider" ConsumerConnectionPointID="TabSystem" />
            <asp:WebPartConnection ID="StatePageContextToPageLogic" ProviderID="dashBoardStateProvider"
                ProviderConnectionPointID="DashBoardPageContextExport" ConsumerID="DashBoardPageLogicWP"
                ConsumerConnectionPointID="PageContext" />
        </StaticConnections>
    </asp:ProxyWebPartManager>
    <div class="pg-scroll-fixed lx-clear">
        <CFBase:BaseWebPartZone runat="server" ID="WPTopZone">
            <ZoneTemplate>
                <WebParts:TabWebPart runat="server" Description="DashBoard" ID="DashBoardTabWP" ChromType="None"
                    IsRMLogRequired="true" />
                <DashBoardWebParts:DashBoardStateWebPart runat="server" ID="dashBoardStateProvider"
                    ChromeType="None" ChromeState="Minimized" />
                <DashBoardWebParts:DashBoardPageLogic runat="server" ID="DashBoardPageLogicWP" ChromeType="None" />
            </ZoneTemplate>
        </CFBase:BaseWebPartZone>
     </div>
    <UC:PartialViewShim runat="server" ID="LandingPageIndex" Area="MedLit" Controller="Research"
        View="ResearchView" />
  </asp:Content>

css を動的にレンダリングする -

 $(function () {
            var $head = $("#frame").contents().find("head");
            $head.append($("<link/>", { rel: "stylesheet", href: '/Pages/CSS/layoutMedLitHome.css', type: "text/css" }));
            $head.append($("<link/>", { rel: "stylesheet", href: '/Pages/CSS/Master0.css', type: "text/css" }));
            $head.append($("<link/>", { rel: "stylesheet", href: '/Pages/CSS/compNewLexis0.css', type: "text/css" }));
            $head.append($("<link/>", { rel: "stylesheet", href: '/Pages/CSS/Search0.css', type: "text/css" }));
            alert('head:' + $head.val());
        });
4

1 に答える 1

0

解決済み、iFrame の代わりに div を使用してクロス ドメイン html を取得し、それを埋め込み、スタイルシートの問題を解決しました! しかし、あなたのサポートに感謝します。

于 2012-08-03T06:30:19.333 に答える