我有两个非常相似的进程,都需要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; }
}
答案 0 :(得分:0)
对于遇到类似问题的其他人,请尝试在web.config的<httpRuntime requestValidationMode="2.0" />
部分添加<system.web>
。