我有两个非常相似的过程,都需要 HTML 输入和 AllowHtml 属性...一个过程创建一个 HTML 电子邮件,而另一个创建一个更新消息以显示给登录的用户。
AllowHtml 属性在创建电子邮件时工作正常,但是当我尝试创建更新消息时,它会引发“潜在危险的 Request.Form 值...”错误。
什么会导致 AllowHtml 为一个而不是另一个工作?
我已经倾注了所有代码,但无法弄清楚两者之间可能导致此问题的不同之处。
这是我在电子邮件控制器中的代码:
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; }
....
}
这是我在更新消息控制器中的代码:
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”,现在一切正常。
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; }
}