1

HTML 入力と AllowHtml 属性を必要とする 2 つの非常によく似たプロセスがあります... 1 つのプロセスは HTML メールを作成し、もう 1 つのプロセスはログイン ユーザーに表示する更新メッセージを作成します。

電子メールの作成時に AllowHtml 属性は正常に機能していますが、更新メッセージを作成しようとすると、「潜在的に危険な Request.Form 値...」エラーがスローされます。

AllowHtml が一方では機能し、他方では機能しない原因は何ですか?

私はすべてのコードに注ぎ込みましたが、この問題を引き起こす可能性のある 2 つの違いがわかりません。


電子メールコントローラーのコードは次のとおりです。

public ActionResult Create()
{
    return View(new EmailBlast());
}
[HttpPost]
public ActionResult Create(EmailBlast Email)
{
    if (ModelState.IsValid)
    {
        var EmailID = _emailblasts.Create(Email);
    }
    return View(Email);
}

メールモデルは次のとおりです。

public class EmailBlast
{
    public decimal EmailID { get; set; }

    [Required(ErrorMessage = "Please Enter a Subject")]
    [StringLength(250, ErrorMessage = "Subject Too Long")]
    public string Subject { get; set; }

    [Required(ErrorMessage = "Please Include a Message")]
    [AllowHtml]
    public string HTMLBody { get; set; }
    ....
}

Update Messages Controller のコードは次のとおりです。

public ActionResult Create()
{
    return View(new CreateUpdateMessage());
}
[HttpPost]
public ActionResult Create(CreateUpdateMessage message)
{
    if (ModelState.IsValid)
    {
        var Message = _updatemessages.Create(message);
        return RedirectToAction("View", new { id = Message.ID });
    }
    return View(message);
}

更新メッセージ モデル:

public class CreateUpdateMessage
{
    [Required(ErrorMessage = "Please Enter a Subject")]
    [StringLength(250, ErrorMessage = "Subject Too Long")]
    public string Subject { get; set; }

    [Required(ErrorMessage = "Please Include a Message")]
    [AllowHtml]
    public string Message { get; set; }
}

わかりましたので、問題を理解しました... CreateUpdateMessage.Message を「MessageHTML」に変更したため、「Message」は予約済みパラメーターか何かである必要があり、すべてが正常に機能するようになりました。

public class CreateUpdateMessage
{
    [Required(ErrorMessage = "Please Enter a Subject")]
    [StringLength(250, ErrorMessage = "Subject Too Long")]
    public string Subject { get; set; }

    [Required(ErrorMessage = "Please Include a Message")]
    [AllowHtml]
--> public string MessageHTML { get; set; }
}
4

1 に答える 1

0

同様の問題を抱えている他の人については、web.config<httpRuntime requestValidationMode="2.0" />のセクションに追加してみてください。<system.web>

于 2012-08-16T00:13:57.730 に答える