6

サイトの管理パネルでTinyMCE エディターを使用しているため、モデル プロパティ (tinymce のターゲット) を[AllowHtml]で装飾し、ビューでHtml.BeginForm()を使用します。HTML フィールドを含むフォームを送信すると、すべて正常に動作します。

しかし、オーバーロードHtml.BeginForm("action","controller")を同じ方法で使用すると問題が発生し、[AllowHtml]をスキップしてよく知られている Request.form 例外をスローします。例外なく動作させるために、Action-Method で[ValidateInput(false)]を使用する必要があります。なぜなのかご存知ですか?事前にご説明いただきありがとうございます。

これはシナリオ/プロジェクトです: Asp.net Mvc 4:

モデル/Ricetta.cs

..
[Required(ErrorMessage = "Corpo Articolo vuoto")]
[AllowHtml]
public string corpoTesto { get; set; }
..

コントローラー / RicetteController.cs

..
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(RicettaViewModel modelloRicetta)
    {
        if (ModelState.IsValid) {
..

View ("Create", modelObject) として、RicetteController の別のアクション メソッドから呼び出されたRicette/Createを表示します。

 @model WebAPP_MVC4.Areas.Admin.Models.RicettaViewModel
 ...
 @using (Html.BeginForm("Create","Ricette",FormMethod.Post)){
 @Html.AntiForgeryToken()
 @Html.ValidationSummary(true)

....

<fieldset>
    <legend>Corpo Ricetta ~</legend>
    <div class="editor-label">
        @Html.LabelFor(p=>p.ricetta.corpoTesto)
    </div>
    <div class="editor-field">
        @Html.TextAreaFor(p=>p.ricetta.corpoTesto, new { @cols = 60, @rows = 20})
        @Html.ValidationMessageFor(p=>p.ricetta.corpoTesto)
    </div>
 </fieldset>
..
4

1 に答える 1