0

特定の.js および .css ファイルを必要なページだけに含めたい。

たとえば、私の EditorTemplateDateTime.ascxにはファイルanytimec.jsanytimec.css.

このテンプレートは、DateTime 型の値を持つモデルのビューでEditorForまたはEditorForModelヘルパー メソッドを使用するたびに適用されます。

私のテクニック:

<head>この条件をマスター ページのセクションに入れました。ModelMetadataの DateTime型プロパティをチェックします。

<% if (this.ViewData.ModelMetadata.Properties.Any(p => p.ModelType == typeof(DateTime))) { %>
    <link href="../../Content/anytimec.css" rel="stylesheet" type="text/css" />
    <script src="../../Scripts/anytimec.js" type="text/javascript"></script>
<% } %>

これには2 つの問題があります。

  1. タイプ DateTime のネストされた子モデルがあると失敗します

  2. EditorForまたはEditorForModelメソッドのないビューによって不必要にトリガーされる(例: DisplayForModel )

このテクニックを改善するにはどうすればよいですか?

4

2 に答える 2

1

個人的には、部分ビューと ASP コンテンツ プレースホルダーを使用します。

Views/Shared にはEditorScripts.ascx、編集ページに含めるスクリプトを定義するタグを含む部分ビューがあります。

次に、Site.Master<head>タグに次のようなプレースホルダーを挿入します。

<asp:ContentPlaceHolder ID="HeadContent" runat="server" />

スクリプトが必要な/必要なビューで、次のコードを配置します。

<asp:Content ContentPlaceHolderID="HeadContent" runat="server">
    <% Html.RenderPartial("EditorScripts");  %>
</asp:Content>

これは完全な解決策ではなく、希望するほど動的ではありません。部分的なビューを使用する理由は、これらのビューを更新またはスクリプトを追加することにした場合、1 つの場所で更新するだけで済むためです。

もう 1 つの方法は、Editor.Masterこれらのスクリプトやその他のエディター固有のものを含むページを作成し、そのマスターSite.Masterにマスター ページとして使用させることです。次に、すべてのエディター ビューEditor.Masterのマスター ページが になります。

HTH

于 2010-05-21T04:34:22.133 に答える
1

テレリックの Web アセット マネージャーを使用すると、目的を達成でき、オープン ソースであると思います。

于 2010-07-19T13:58:41.117 に答える