ASP.NET MVC default olarak action gönderilen parametreyi, doğrulama filtrelerinden geçirir. Gönderdiğimiz parametrelerde özel karakterler yoksa (html karakterleri gibi), işleme devam eder.
Aşağıdaki gibi WYSIWYG bir editor kullandığınızda, başlık bölümü düz metin olur.
Ama detay alanımızda çoğunlukla Summernote gibi javascript editörleri kullanırız. Bu tarz editörler, işlemlere bağlı olarak (pre,img,span gibi) html kodları üretir.
Biz de aldığımız html kodlarını veritabanında kaydederiz. Ama html kodlarımızı action metoduna gönderdiğimizde İstemcide ... zararlı olabilecek bir değer Request.Form algılandı. hatası alırız,
Hata aynen şöyledir.
Veriyi kaydettiğimiz Action metoda bakalım;
[HttpPost]
public ActionResult Index(string baslik, string kategori, string detay)
{
MakaleDbEntities veri = new MakaleDbEntities();
MakaleTablo makale = new MakaleTablo();
makale.Mbaslik = baslik;
makale.Mkategori = kategori;
makale.Mdetay = detay;
veri.MakaleTablo.Add(makale);
veri.SaveChanges();
return View("Index");
}
Bu metoda aşağıdaki ifadeyi eklemeniz yeterlidir.
[HttpPost]
[ValidateInput(false)]
public ActionResult Index(string baslik, string kategori, string detay)
{
MakaleDbEntities veri = new MakaleDbEntities();
MakaleTablo makale = new MakaleTablo();
makale.Mbaslik = baslik;
makale.Mkategori = kategori;
makale.Mdetay = detay;
veri.MakaleTablo.Add(makale);
veri.SaveChanges();
return View("Index");
}