我试图将表单提交给我的控制器操作,其中一个表单字段包含HTML标记,例如<p>
<ul>
我添加了
<httpRuntime requestValidationMode="2.0"/>
和
<pages
validateRequest="false"
</pages>
在我的web.config
中,也是
我添加了
[ValidateInput(false)]
到我的控制器操作
但当我在description
字段包含HTML标记时提交表单时,它会出现以下错误:
A potentially dangerous Request.Form value was detected from the client (desc="<ul><li>Comments: Th...").
我应该/我能做什么,提前谢谢...
我正在使用VS 2010,MVC,实体框架
修改
这是视图侧代码
<% using (Html.BeginForm("UpdateProductVariant", "home", new { Id = Model.productVariant.ProductVariantId }, FormMethod.Post))
{%>
<table>
<tr>
<td>Name:</td>
<td><%: Html.TextArea("ProductVariantName", Model.product.Name)%></td>
</tr>
<tr>
<td>Description:</td>
<td><%= Html.TextArea("desc",Model.productVariant.Description)%></td>
</tr>
控制器端
[ValidateInput(false)]
public ActionResult UpdateProductVariant(int id, FormCollection collection, bool pub, bool del, decimal hprice)
{
答案 0 :(得分:3)
以下内容应该有效:
型号:
public class MyViewModel
{
public string Description { get; set; }
}
控制器:
public class HomeController: Controller
{
public ActionResult Index()
{
var model = new MyViewModel
{
Description = "<p>Hello</p>"
};
return View(model);
}
[ValidateInput(false)]
[HttpPost]
public ActionResult UpdateProductVariant(MyViewModel model)
{
...
}
}
查看:
<% using (Html.BeginForm("UpdateProductVariant", "home", new { Id = Model.productVariant.ProductVariantId }, FormMethod.Post)) { %>
<%= Html.TextAreaFor(x => x.Description) %>
<input type="submit" value="OK" />
<% } %>
如果您运行的是ASP.NET 4.0,则只需将<httpRuntime requestValidationMode="2.0"/>
添加到web.config中。您也不需要添加<pages validateRequest="false" />
。
如果这不起作用,您可能无法使用[ValidateInput(false)]
属性修饰正确的控制器操作。这应该是您将表单发布到的操作。