3

Visual Studio2010とASP.NET4.0を使用してメニューコントロールをHTMLリストとしてレンダリングしているので、CSSを使用してスタイルを設定できます。これが私が以下で使用しているコードです

<asp:Menu ID="navlist" runat="server" Orientation="Horizontal"
SkipLinkText="" ClientIDMode="Static" DataSourceID="MenuSource" 
MaximumDynamicDisplayLevels="0" IncludeStyleBlock="False" 
StaticDisplayLevels="2">
</asp:Menu>

これにより、次のHTMLが生成されます

<!-- URL shortened -->
<script src="/WebResource.axd?...t=634066906994188146"type="text/javascript"></script>

<div id="navlist">
    <ul>
        <li><a href="link1.html">Link 1</a></li>
        <li><a href="link2.html">Link 2</a></li>
    </ul>
</div>

一見、これはまさに私が望んでいたもののように見えます。ただし、WebResource.axdを開くと、メニューに関連するjavascriptコードがたくさんあります。このコードの一部は、独自のインラインスタイルをリストに適用しています。FireBugを使用すると、JavaScriptの実行後にHTMLマークアップを表示でき、次のようになります。

<div id="navlist" style="float: left;">
    <ul class="level1 static" tabindex="0" style="position: relative; width: auto; float: left;" role="menubar">
        <li role="menuitem" class="static" style="position: relative; float: left;">
            <a href="link1.html" class="level2 static" tabindex="-1">Link 1</a>
        </li><li role="menuitem" class="static" style="position: relative; float: left;">
            <a href="link2.html" class="level2 static" tabindex="-1">Link 2</a></li>
    </ul>
</div>

これらのインラインスタイルは、最終的に私のページのレイアウトに影響を与えます。WebResource.axdのスクリプトは必要ありません。このスクリプトがページの最終マークアップでレンダリングされないようにするにはどうすればよいですか?

4

6 に答える 6

8

IncludeStyleBlock属性を使用するだけの場合は、メニューにスタイルを設定しないように指示できます。

デフォルトでは「true」になっています

<asp:Menu IncludeStyleBlock="False" />
于 2013-09-14T23:12:46.237 に答える
5

cssで!importantを使用します

于 2011-11-15T18:59:01.427 に答える
4

カスタムメニュー(System.Web.UI.WebControls.Menuから派生)を作成し、OnPreRenderを置き換えました。

public class MyCustomMenu : System.Web.UI.WebControls.Menu
{
    protected override void OnPreRender(EventArgs e)
    {
        // Don't call base OnPreRender
        //base.OnPreRender(e);
    }
}

それでうまくいきました。

于 2011-10-20T14:54:43.383 に答える
2

コントロールのすぐに使用できる機能を変更するために多くのことを行うことはできませんMenuただし、独自のコントロールを作成することも、 CSS ControlAdapterToolkitを使用することもできます。

于 2010-06-19T10:14:29.577 に答える
1

カスタムクラスでをオーバーライドしようとしましたが、自分のcssコードをクリーンリストに適用できるように、、、、およびタグからすべてasp:menuの属性を単純に削除する方法をまだ学びませんでした。ullia

Imports Microsoft.VisualBasic
Namespace MCO

Public Class MyCustomMenu
    Inherits Menu

        Protected Overrides Sub OnPreRender(e As EventArgs)
            ' don't use this:
            ' MyBase.OnPreRender(e)

            ' but leaving this blank produces NO rendered menu
        End Sub
    End Class
End Namespace

jQueryメソッドも試しました。

$("#navlist li,#navlist li a,#navlist ul,#navlist div").removeAttr('style');

しかし、.net webresourceが最後に実行されるため、jQuery行が機能しないことがわかりました。すべきですが、そうではありません。:(

于 2015-05-05T16:10:45.037 に答える
0

インラインスタイルを削除し、jQueryを介していくつかのクラス名を変更することでこれを管理しました。もちろん、すべての要素のスタイルを変更することはできますが、不要なcssコードが大量に生成されるだけです。

これらのインラインスタイルをli、a、ul、およびdivから削除する場合は、これを使用します。

$("#navlist li,#navlist li a,#navlist ul,#navlist div").removeAttr('style');

次に、これらのクラス名を変更できます。例:

$("#from-this-element").removeClass(.remove-me).addClass('.new-class');

そして、ページがロードされた後にこのスクリプトを使用するのが最良の方法だと思います。

于 2014-09-02T06:34:26.840 に答える