PDA

View Full Version : مبتدی: گرفتن خروجی از ادیتور متن ckeditor



sara_aryanfar
سه شنبه 17 آبان 1390, 04:53 صبح
با سلام من در پروژه خودم از ادیتور متن ckeditor استفاده کردم و خواستم با کد زیر مقدارش رو داخل یک متغییر بریزم اما نشد در این کد Texted ادیتورمون هست خواهش می کنم بگید چطوری باید مقدارش رو بخونم
protected void Button1_Click(object sender, EventArgs e)
{



string text = Texted.Text;

}

aliyeh
سه شنبه 17 آبان 1390, 07:45 صبح
string text=Texted.Value;

sara_aryanfar
سه شنبه 17 آبان 1390, 12:15 عصر
با تشکر از توجهتون آخهtexted خاصیت values نداره

Reza798
سه شنبه 17 آبان 1390, 12:26 عصر
با تشکر از توجهتون آخهtexted خاصیت values نداره

با سلام

خروجی CKEditor به صورت HTML است و به صورت زیر دریافت می شود :

string value = CKEditor.Text

ASP.NET2
سه شنبه 17 آبان 1390, 12:29 عصر
با سلام من در پروژه خودم از ادیتور متن ckeditor استفاده کردم و خواستم با کد زیر مقدارش رو داخل یک متغییر بریزم اما نشد در این کد Texted ادیتورمون هست خواهش می کنم بگید چطوری باید مقدارش رو بخونم
protected void Button1_Click(object sender, EventArgs e)
{



string text = Texted.Text;

}

دلیل اینکه شما به Text در CodeBehind دسترسی ندارین این هستش که کنترل TextArea که استفاده کردیت ClientSide هست. از TextBox استفاده کنید. و TextMode ش رو هم رو Multiline ست کنید.

sara_aryanfar
سه شنبه 17 آبان 1390, 13:01 عصر
من الان با کد زیر می خوام یه مقدار رو که از ادیتور اومده داخل دیتا بیسم بریزم
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

String StrScript = "CKEDITOR.replace( '" + Texted.ClientID + "',{skin : 'kama'});";
ClientScript.RegisterStartupScript(this.GetType(), "Editor", StrScript, true);

}
protected void Button1_Click(object sender, EventArgs e)
{
string con = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\sara.mdf;Integrated Security=True;User Instance=True";
SqlConnection conobj = new SqlConnection(con);
string comand = "insert into news(new) values('" + Texted.Text + "')";
SqlCommand comobj = new SqlCommand(comand, conobj);
conobj.Open();
comobj.ExecuteNonQuery();
conobj.Close();



}
}
اما ارر مطابق تصویر میده
77575
من ValidateRequest="false" رو هم در صفحه که ادیتور هست قرار دادم البته صفحه داره از یک مستر پیج استفاده می کنه

sara_aryanfar
سه شنبه 17 آبان 1390, 13:33 عصر
با توجه به اینکه ممکنه برای دیگر دوستان هم این مشکل پیش بیاد جواب رو که به دست آوردم در اینجا قرار میدم
اگر ما از .net 4 استفاده می کنیم باید این کد رو به وب کانفینگ سایتمون اضافه کنیم
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
دوستانی که در مورد کارکرد این قطعه کد اطلاعات دقیقتری دارند لطفا بگن ممنون

fakhravari
سه شنبه 17 آبان 1390, 15:26 عصر
وب کنفیگ
<pages enableEventValidation="false" validateRequest="false" enableViewStateMac="false" viewStateEncryptionMode="Never">

ASP.NET2
سه شنبه 17 آبان 1390, 16:58 عصر
با توجه به اینکه ممکنه برای دیگر دوستان هم این مشکل پیش بیاد جواب رو که به دست آوردم در اینجا قرار میدم
اگر ما از .net 4 استفاده می کنیم باید این کد رو به وب کانفینگ سایتمون اضافه کنیم
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
دوستانی که در مورد کارکرد این قطعه کد اطلاعات دقیقتری دارند لطفا بگن ممنون
خوب یه سوال؟ آیا شما تا حالا سعی کردین تو TextBox کد html وارد کنید؟
اگه این کارو بکنید با خطای زیر روبرو میشید.


A potentially dangerous Request.Form value was detected from the client (TextBox1="<b>This Line Is Bold...").


خوب این یعنی اینکه Asp.Net ورودی شما رو یک ورودی خطرناک تشخیص داده.
مگر نه اینکه ورودی یک ادیتور هم Html هستش؟

asp.net ورودی های از نوع HTML رو ورودی خطرناک میشناسه و از ورودشون جلوگیری می کنه. در Asp.net 2 شما اجازه ی این رو داشتید که requestValidation هر صفحه رو از کار بندازید. ولی در ver4 این کار عملی نبود.
ما برای اینکه Asp.Net4 این اجازرو به ما بده می بایست requestValidation کل Application رو از طریق webconfig تبدیل به ورژن 2 بکنیم تا بتونیم requestValidation v رو از کار بندازیم و به ادیتور این امکان رو بدیم تا بتونه Html رو بصورت ورودی قبول کنه.ولی خوب باید در نظر گرفت که با این کار امنیت کل صفحات پروژه زیر سوال خواهد رفت.و Application ما در برابر حملات Xss ضعف خواهد داشت. پس مجبوریم بعد از این کار ورودی ها رو کنترل کنیم.

sara_aryanfar
سه شنبه 17 آبان 1390, 19:01 عصر
خب اگر هم اینکار رو نکنم هر چیزی که از ادیتور میاد ارر بالا رو بهش میده راه حل دیگه ای وجود نداره که امنیت هم حفظ بشه

ASP.NET2
سه شنبه 17 آبان 1390, 20:00 عصر
خب اگر هم اینکار رو نکنم هر چیزی که از ادیتور میاد ارر بالا رو بهش میده راه حل دیگه ای وجود نداره که امنیت هم حفظ بشه
چرا یه راه وجود داره !
حالا که شما validateRequest رو از کار انداختید پس سنجش اعتبار ورودی ها به عهده ی شما هستش .
2 تا راه حل وجود داره
1- انقدر مطالعه کنید که در این مورد استاد بشید و بتونید یه راه حل براش پیدا کنید.که با این حال باز هم روش های زیادی برای دور زدن راه حل ابداعی شما وجود داره.
2-از یک Library که خود Microsoft ارائه داده استفاده کنید به اسم WebProtection Library که تو CodeProject هستش . رایگان هم هست می تونید داونلود کنید و ورودی های خطرناک رو با اون تصفیه کنید.
به هیچ وجح هم تشکر نکنید از کسایی که جوابتونو میدن.:قهقهه:

sara_aryanfar
سه شنبه 17 آبان 1390, 20:47 عصر
اولا validateRequest کل برنامه از کار نمیفته چون من تست کردم فقط همون صفحه مورد نظر از کار میفته و اگر در صفحه دیگر به تکس باکس کد htmlوارد کنی ارر میده پس مشکلی نیست اما در مورد تشکر دوست عزیز من یادم رفته من از همه دوستان که جواب میدن کمال تشکر رو دارم اما در کل ما اینجا جمع نشدیم که تشکر جمع کنیم من که خودم هر جا جواب سوالی در حد سواد خودم رو میدم هرگز از طرفم انتظار تشکر ندارم چون برام مهمترین چیز راه افتادن کار اون هست تا شاید فردا روزی هم بزرگواری چون شما جواب سوال منو بده

ASP.NET2
چهارشنبه 18 آبان 1390, 10:57 صبح
این رشه رو تو WebConfig اضافه کنید و دوباره امتحان کنید.


<pages validateRequest="false"/>
<httpRuntime requestValidationMode="2.0"/>

fakhravari
چهارشنبه 18 آبان 1390, 12:09 عصر
با سلام
در هر پیجی در بالا می تونید validateRequest="false" تغیر بدین

Saman Hashemi
چهارشنبه 18 آبان 1390, 12:28 عصر
از ادیتورهایی استفاده کنید که نیازی به این تغییر ندارن...!
فکر میکنم TinyMCE اینجوریه و نیازی نیست این خاصیت غیرفعال بشه...!