概要
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());
});