3
<% if (Session["desig"].ToString() == "Developer"){%>
    <td>
        <select name='zone' id="zone" onchange="showLoc(this.value,'mlodg_loc')"> 
            <option value="Select Zone">Select Zone</option>
            <option value="East">East</option>
            <option value="West">West</option>
            <option value="North">North</option>
            <option value="South1">South1</option>
            <option value="South2">South2</option>
            <option value="South3">South3</option>
        </select>
    </td>  
<%}
  else 
  {%>
        <td>
          <select name='zone' id="Select1" onchange="showLoc(this.value,'mlodg_loc')"> 
              <option value="Select Zone">Select Zone</option>
              <option value="<%#Session["zone"]%>"><%# Session["zone"].ToString() %></option>
          </select>
        </td>
<%}%>

上記のコードは、直接記述している場合は正常に機能しています。このコードを他のファイルに書き込もうとしましたが、メインファイルに書きました。Response.WriteFile("zone.aspx")

どのように含めることができますかそれを含める方法はありますか?また、上記のステートメントを書くためのより良い方法を知りたいです。

ありがとうございました

4

3 に答える 3

5

UserControlsこの目的のためにasp.netにあり、このコードの.ascxファイルを作成し、それをどこでもコントロールとして使用します。

于 2013-01-24T11:19:51.970 に答える
3

Response.WriteFilefilecontents を解析せずに Http 応答ストリームに書き込むだけです。

サーバーサイドインクルードをasp.net( )で使用することは可能ですが<!--#include file="xxx.ext" -->、これにはasp-classicコードの匂いがあります。

.aspxコンポーネントを再利用するより良い方法は、ユーザー コントロール (.ascx)を使用することです。

同様の質問はこちら

アップデート

Response.WriteFileプレーンな Html、.css、または .js には問題ありませんが、c# を含むコードや (コードで使用Sessionした) .Net オブジェクトを参照するコードには適していません。

Response.WriteFile("HtmlSnippet.html")

どこHtmlSnippet.htmlですか

<p>In breaking news, scientists have discovered a planet in 
     <a href='http://en.wikipedia.org/wiki/Alpha_Centauri_Bb'>Alpha Centauri</a>
</p>

サーバーサイドインクルードを使用すると、たとえば、次の<!--#include file="file.inc" -->ようなものをfile.incに配置できます。

<% if (Session["desig"].ToString() == "Developer"){ %>
   You are a Developer!!
<% } %>

ただし、ユーザー コントロール ( .ascx) を使用することをお勧めします。これにより、サーバー側のインクルードとほぼ同じことができますが、より再利用可能で、オブジェクト指向で、テストしやすい方法で行うことができます。再利用可能な Control は、プロパティ、メソッドを備えたファーストクラスのオブジェクトになり、イベントを発生させることができます。ここでいくつかの調査を行う必要があります。

于 2013-01-24T11:20:18.020 に答える
0

Response.WriteFile は、サーバー側でコードを処理しません。単純に html のコンテンツを取得し、それをブラウザーにパイプします。コードにサーバーで処理する必要があるコード ブロックが含まれている場合は、次の便利な機能を使用できます。

<div ID="menuContent" runat="server">
    <!-- #Include virtual="/menu.aspx" -->
</div>   

私の menu.aspx ファイルには生の html といくつかの C# コードブロックがあり、ASP はページにコンテンツを挿入した後にそれらを解決します。いいでしょ?

于 2016-04-29T19:32:12.457 に答える