AllowHtml不工作 - 但与不同的模型/控制器工作正常

时间:2012-08-03 18:59:46

标签: asp.net-mvc-3 data-annotations

我有两个非常相似的进程,都需要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; }
}

1 个答案:

答案 0 :(得分:0)

对于遇到类似问题的其他人,请尝试在web.config的<httpRuntime requestValidationMode="2.0" />部分添加<system.web>