2017-12-13 14 views
0

DropDownListコントロールでhtmlエンティティを使用しようとしています。エンティティを使用しているのは、m ²/sやkg/m ³のような上付きの単位を表示したいからです。選択肢タグ内で機能しないため、オプションはありません。私は自分の問題を示す小さな例を作りました。ここに私のaspxページは次のとおりです。WebFormsのhtmlエンティティをレンダリングするDropDownListコントロール

<!DOCTYPE html> 
<html lang="en"> 
    <head runat="server"> 
    <meta charset="utf-8" /> 
    <title></title> 
</head> 

<body> 
    <form id="form1" runat="server"> 
     <div> 
      <select>   
       <option value="1">M&#179;/min</option> 
       <option value="2">M&#179;/s</option> 
      </select> 

      <asp:DropDownList ID="drp" runat="server"></asp:DropDownList> 


     </div> 
    </form> 
</body> 
</html> 

、ここでは私のコードは遅れている:

public partial class MyPage: System.Web.UI.Page 
{ 
    private class idAndUnit 
    { 
     public int Id { get; set; } 
     public string Unit { get; set; } 
    } 


    protected void Page_Load(object sender, EventArgs e) 
    { 
     var units = new List<idAndUnit>() 
     { 
      new idAndUnit 
      { 
       Id = 1, 
       Unit = "M&#179;/min" 
      }, 
      new idAndUnit 
      { 
       Id = 2, 
       Unit = "M&#179;/min" 
      } 
     }; 


     drp.DataSource = units; 
     drp.DataTextField = "Unit"; 
     drp.DataValueField = "Id"; 
     drp.DataBind(); 


    } 
} 

ページを実行し、ソースを見れば、それはあなたが以下を参照してください生成HTML:

<select>   
    <option value="1">M&#179;/min</option> 
    <option value="2">M&#179;/s</option> 
</select> 

<select name="drp" id="drp"> 
    <option value="1">M&amp;#179;/min</option> 
    <option value="2">M&amp;#179;/min</option> 

ご覧のとおり、DropDownListのバージョンはM ³ /分をMに変更しました#179; /分。この変更が何らかの理由で役立つか、おそらくxssやそのようなものを防ぐためのセキュリティ上の理由があるとは思われません。この動作をここで防ぐことができるので、私は後に出力を得ることができますか?

答えて

1

ジャスト( "M ³/min" は)それを修正HttpUtility.HtmlDecodeを使用して

それを考え出しました。

関連する問題