我有MVC副作用
@Html.TextAreaFor(x => x.Text)
我控制器操作定义在我的强类型查看一个TextArea原本看起来与此类似:
[HttpPost]
public ViewResult Index(MyViewModel vm)
{
using (var db = new MyEntities())
{
Post p = new Post();
p.Text = vm.Text;
db.Posts.AddObject(p);
db.SaveChanges();
}
return View();
}
这工作得很好。用户输入到TextArea中的文本被传递到控制器,并通过实体框架保存到SQL Server中的Post表中。该字段的数据类型是varchar(1000)。 (在使用MetadataType和[StringLength(1000)]验证的文本字段上也有模型验证。)
我注意到如果我试图复制一些HTML源文件并将其粘贴到TextArea中并提交它,我收到以下错误:
错误导致我this question“从客户端检测到有潜在危险的Request.Form值”,并从那里是我可以简单地添加拿走
[HttpPost, ValidateInput(false)]
我的行动停止这种类型的验证。这很有效,但是对我的臆测,无论我尝试将其放入TextArea中,我都不会造成任何问题。如果我在javascript,html或T-SQL语句中粘贴引号字符,它仍然可以正常工作。我看到了我在SQL表中出现的TextArea中输入的确切字符,并且如果将文本显示回View,我会在源代码中看到每个字符都转换为HTML对手,并且屏幕上的显示看起来就像它是在我输入时进行的。我没有做任何类型的文本转换来完成此操作。在默认情况下,一切正如我所愿。当然,我对此感到高兴,但是当我阅读关于禁用验证的信息时,通常会发出警告,告知您应该了解这样做的后果,我认为我不这样做。所以我想知道,后果是什么?有没有什么人可能会输入到我的TextArea,可能会因为禁用输入验证而导致混乱?
如果相关,我的特殊设置是MVC4,.NET 4.0,实体框架4.4,SQL Server 2012 Express。
谢谢。这正是我正在寻找的信息。 – TTT 2013-02-25 15:58:13
加入了链接,发誓它原来! – 2013-02-25 23:58:33