我有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