Merhaba arkadaslar,
Bu yazımda asp.net de karşılaşabileceğiniz bir hatadan ve çözümünden bahsetmeye çalışacağım.
Hatamızın adı :
RegisterForEventValidation can only be called during Render();
ya da
RegisterForEventValidation ancak Render() sırasında çağrılabilir ;
Yukarıdaki gibi bir hata alıyorsanız muhtemelen excel e export ya da word e bişeyler export etmeye çalışıyorsunuz. Ya da kodunuzun içinde RenderControl kullanıyorsunuz. Şimde gelelim bu hatadan nasıl kurtulabiliriz.
Bu hatadan kurtulmanın ve kodumuzun sağlıklı bir şekilde çalışmasına devam etmesi için sayfanızın .aspx tarafında küçük bir ekleme yapmamız yeterli olacaktır.
Language="C#" ifadesinin olduğu satıra EnableEventValidation="false" yazmanız yeterli olacaktır. EnableEventValidation="false" yazdıktan sonra yeniden build edin ve kodunuzun istediğiniz gibi çalışıyor olmasının tadını çıkarın. :)
Evet bir yazının daha sonuna geldik.
Faydalı olması dileği ile.
Kaydol:
Kayıt Yorumları (Atom)
hocam uzun süredir yaşadığım sorunu bu iki kelimeyle çözdüm.eline sağlık.Bahadır Akgün
YanıtlaSilMerhaba,
YanıtlaSilFaydalı olmasina sevindim.
Kolay gelsin. Iyi Calismalar.
merhaba bir div içerisine table ve birde datalist koyup daha sonra bu div e runat="server" deyip RenderControl yapamazmıyım? yani div içerindeki herşeyi excele göndermek istiyorum. Yardım edermisiniz??
YanıtlaSilMerhaba,
YanıtlaSilBu mumkun. İsini gorecek olan fonksiyonu yazdim. Asagida bulabilirsin.
Dikkat etmen gereken yer div'e runat="server" ozelligini eklemelisin. Ayrica Fonksiyonun calisabilmesi icin asagidaki referanslari da eklemen gerekmekte.
Eklenecek olan Referanslar:
----------------------------
using Microsoft.Office.Core;
using System.IO;
using System.Diagnostics;
using System.Text;
Fonksiyon:
-----------------
public void ExportDivToExcel(string filename, HtmlControl DivName)
{
string attachment = "attachment; filename=" + filename + ".xls";
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
HttpContext.Current.Response.AddHeader("content-disposition", attachment);
HttpContext.Current.Response.ContentType = "application/ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
DivName.RenderControl(htw);
HttpContext.Current.Response.Write(HttpUtility.HtmlDecode(sw.ToString()));
HttpContext.Current.Response.End();
}
Kolay gelsin.
Iyi calismalar.
çok yardımcı oldu, emeğinize sağlık
YanıtlaSilFaydali olmasina sevindim.
YanıtlaSilÇok tşekkürler.
YanıtlaSilAbi çok sağolun
YanıtlaSilÇok teşekkürler.Çok Faydalı oldu.
YanıtlaSilteşekkürler
YanıtlaSilTEŞEKKÜRLER
YanıtlaSilAdamsın ismail koç:D
YanıtlaSilTeşekkürler fayda sağladım :) Emeğine sağlık
YanıtlaSilEmeğine sağlık reis sorun çözüldü:)
YanıtlaSilTeşekkürler
YanıtlaSil