HtmlHelper.Encode

Response.Writeとかで文字列を出力する時などで、その文字列がHTMLやJavaScriptとして解釈されたくない場合がある。
たとえば、テキストボックスにJavaScriptを入れて、それがJavaScriptとして解釈された場合、意図しない動作になり、セキュリティ的に問題になる。(SQLインジェクション)
そこでHTMLエンコードすることでそういう問題を回避できる。

HtmlHelper.Encode メソッド (System.Web.Mvc) | Microsoft Learn
第1回 ASP.NET MVCフレームワーク 基本のキ:連載:ASP.NET MVC入門(4/5 ページ) - @IT

ASP.NET MVC Web Application

ASP.NET MVC Web Application

Controller
Controller

Controller

FirstController
FirstController

FirstController

デバッグモードにする
デバッグモードにする

デバッグモードにする

HomeのIndex.aspx
HomeのIndex.aspx

HomeのIndex.aspx

FirstはViewがないのでエラー
FirstはViewがないのでエラー

FirstはViewがないのでエラー

FirstにIndex用のView追加
FirstにIndex用のView追加

FirstにIndex用のView追加

これで追加
これで追加

これで追加

こういうのが追加される
こういうのが追加される

こういうのが追加される

このまま実行すると真っ白
このまま実行すると真っ白

このまま実行すると真っ白

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Index</title>
</head>
<body>
    <div>
        <%
            string str1 = "<b>‚ ‚¢‚¤‚¦‚¨</b>";
            Response.Write(str1);
        %>
    </div>
</body>
</html>

Index.aspxにこれを書くと、

bタグが解釈されるので太字になる。
bタグが解釈されるので太字になる。

bタグが解釈されるので太字になる。

Html.Encodeを通すと、

プレーンテキストとして解釈されるのでこうなる。
プレーンテキストとして解釈されるのでこうなる。

プレーンテキストとして解釈されるのでこうなる。
(HTMLエンコードと呼ぶのに、HTMLとして解釈されないようにするというのは、なんか違和感あるけど、こういうものらしい。)

Sample/aspnetmvc/HtmlHelper/Encode/src/HtmlHelper_ at master · bg1bgst333/Sample · GitHub