0

私のエンジンは Aspx です。

テキスト ボックスにある html タグをデコード/エンコードするにはどうすればよいですか。
読みやすくするためにhtmlタグを付けました。ValidationRequest と htmlDecode(freqQuestion.Answer) を試しましたが、うまくいきませんでした。私はちょうど同じメッセージを受け取り続けます。

「/Administrator」アプリケーションでサーバー エラーが発生しました。

潜在的に危険な Request.Form 値がクライアントから検出されました (QuestionAnswer="...ics 電話:
123-456-7890

説明: リクエストの検証で、潜在的に危険なクライアント入力値が検出されたため、リクエストの処理が中止されました。この値は、クロスサイト スクリプティング攻撃など、アプリケーションのセキュリティを侵害しようとする試みを示している可能性があります。ページがアプリケーション リクエストの検証設定をオーバーライドできるようにするには、httpRuntime 構成セクションの requestValidationMode 属性を requestValidationMode="2.0" に設定します。例: 。この値を設定した後、Page ディレクティブまたは構成セクションで validateRequest="false" を設定することにより、リクエストの検証を無効にすることができます。ただし、この場合、アプリケーションですべての入力を明示的にチェックすることを強くお勧めします。詳細については、 http: //go.microsoft.com/fwlink/?LinkId=153133を参照してください。

View Page

  <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" validateRequest="false" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>


<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    EditFreqQuestionsUser
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<script type="text/javascript">
    $(document).ready(function () {
        $("#freqQuestionsUserUpdateButton").click(function () {
            $("#updateFreqQuestionsUser").submit();
        });
    });
</script>
<h2>Edit Freq Questions User </h2>

<%Administrator.DarkstarAdminProductionServices.FreqQuestionsUser freqQuestionsUser = ViewBag.freqQuestionsUser != null ? ViewBag.freqQuestionsUser : new Administrator.DarkstarAdminProductionServices.FreqQuestionsUser(); %>
<%List<string> UserRoleList = Session["UserRoles"] != null ? (List<string>)Session["UserRoles"] : new List<string>(); %>
<form id="updateFreqQuestionsUser" action="<%=Url.Action("SaveFreqQuestionsUser","Prod")%>" method="post">
    <table> 
        <tr>
            <td colspan="3" class="tableHeader">Freq Questions User Details <input type ="hidden" value="<%=freqQuestionsUser.freqQuestionsUserId%>" name="freqQuestionsUserId"/> </td>
        </tr>
         <tr>
            <td colspan="2" class="label">Question Description:</td>
            <td class="content">
                <input type="text" maxlength="2000" name="QuestionDescription" value="<%=freqQuestionsUser.questionDescription%>" />
            </td>
        </tr>
         <tr>
            <td colspan="2" class="label">QuestionAnswer:</td>
            <td class="content">
                <input type="text" maxlength="2000" name="QuestionAnswer" value="<%=Server.HtmlDecode(freqQuestionsUser.questionAnswer)%>" />
            </td>
        </tr>
        <tr>
            <td colspan="3" class="tableFooter">
                    <br />
                    <a id="freqQuestionsUserUpdateButton" href="#" class="regularButton">Save</a>
                    <a href="javascript:history.back()" class="regularButton">Cancel</a>
            </td> 
        </tr>
    </table>
</form>
</asp:Content>

コントローラ

  [AuthorizeAttribute(AdminRoles = "EditFreqQuestionsUser")]
    public ActionResult SaveFreqQuestionsUser(string QuestionDescription, string QuestionAnswer)
    {
        Guid freqQuestionsUserId = Request.Form["freqQuestionsUserId"] != null ? new Guid(Request.Form["freqQuestionsUserId"]) : Guid.Empty;


        //load agreement eula ref
        AdminProductionServices.FreqQuestionsUser freqqQuestionsUser = Administrator.Models.AdminProduction.FreqQuestionsUser.LoadFreqQuestionsUser(freqQuestionsUserId, string.Empty, string.Empty)[0];

        freqqQuestionsUser.questionDescription = QuestionDescription;
        freqqQuestionsUser.questionAnswer = QuestionAnswer;

        //save it
               Administrator.Models.AdminProduction.FreqQuestionsUser.addFreqQuestionsUser(freqqQuestionsUser);

        return RedirectToAction("SearchFreqQuestionsUser", "Prod", new { FreqQuestionsUserId = freqQuestionsUserId });
    }
4

1 に答える 1

1

WinForms とは異なり、.aspx ファイルは要求を受け取るエンティティではないため、ValidateRequest ディレクティブは MVC では機能しません。コントローラーは。したがって、コントローラーは検証を無効にする必要がある場所です。[ValidateInput (false)] 属性をアクションまたはコントローラー全体に適用するだけで、ランタイムはタグを通過させます。

于 2012-08-02T14:30:51.923 に答える