私のウェブサイトはショッピングサイトであり、ブラウザヘッダーを検出することで、モバイル/デスクトップブラウザ用に自動的にサイズ変更/スタイル変更と配置を行います。
いくつかのものを再配置する1つの例は、ショッピングカートの場所です。
デスクトップブラウザビューでは、ショッピングカートは右側の余白に表示されます。サイトはモバイルブラウザ(つまりiPhone)で狭くなるように設計されているため、モバイルブラウザで表示するときに右側の余白はありません。この場合、代わりにショッピングカートがヘッダーに読み込まれます。
ヘッドとショッピングカートはどちらもユーザーコントロールですが、右側の余白はマスターページに組み込まれているため、ショッピングカートのユーザーコントロールの宣言はマスターページとヘッダーコントロールの両方に存在します。
私のMasterPageの関連するマークアップは次のようになります
<div class="content">
<div id="leftMargin" runat="server"></div>
<div id="centre">
<asp:ContentPlaceHolder id="centreContent" runat="server">/asp:ContentPlaceHolder>
</div>
<div id="rightMargin" runat="server">
<controls:shopping ID="shoppingBasket" runat="server" />
</div>
</div>
次に、次のようにコードビハインドがあります。
If Common.isMobile() Then
leftMargin.Visible = False
rightMargin.Visible = False
End If
コントロールは似ていますHeader
が、完全なdivを非表示にすることを除いて、ユーザーコントロールを非表示にします。
マークアップ:
<div id="miniNav">
<div id="mobileCart" class="mobileCart insertCart">
<controls:shopping ID="shoppingBasket" runat="server" />
</div>
<!--- more buttons --->
</div>
コード:
If Common.isMobile Then
shoppingBasket.Visible = True
Else
shoppingBasket.Visible = False
End If
もちろんですが、Common.isMobile
機能はモバイルアレンジバージョンを表示するかどうかを決定します。
ですから、長い説明の後、私の実際の質問は非常に単純です。
上記の例では、いずれの場合でもページがレンダリングされると、サーバーは、を使用して非表示にされたすべての非表示要素のコーディング/マークアップ/データベースの相互作用などを完全に無視しますか、htmlControl.display=false
それともサーバーにこれらすべてのスクリプトを実際に2回実行する必要がありますか?実際には何もしていないので、一度無駄になったことはありますか?