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; }
}