2012-08-03 33 views
0

我有两个非常相似的进程,都需要HTML输入和AllowHtml属性...一个进程创建一个HTML电子邮件,而另一个创建更新消息以显示登录用户。AllowHtml无法正常工作 - 但适用于不同的模型/控制器

AllowHtml Attribute在创建电子邮件时工作正常,但当我尝试创建更新消息时,它会抛出'具有潜在危险的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); 
} 

,UPDATE消息的模型:

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是保留参数什么的。给“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

这个问题已经解决......不过,我不会让我回答自己的问题。 – 2012-08-03 19:40:41

回答

0

对于有类似的问题别人,尝试在你的web.config的<system.web>部分加入<httpRuntime requestValidationMode="2.0" />

相关问题