ورود

View Full Version : مشکل Substring با ckeditor



bftarane
چهارشنبه 24 آبان 1391, 20:41 عصر
سلام.
من براي درج خبر از ckeditor دارم استفاده مي کنم
براي خلاصه خبر کاري که کردم اينه که
محتواي خبر که وارد ميشه
با کمک کد زير

private string SubStringText(object InputText, object StartIndex, object Length)
{
string StrText = InputText.ToString();
int StrLength = Convert.ToInt32(Length);
if (StrText.Length > StrLength)
{
return StrText.Substring(Convert.ToInt32(StartIndex), StrLength) + "...";
}
else
{
return StrText;
}
}
private string GetPlainTextFromHtml(string Html)
{
return Regex.Replace(Html, "<[^>]", string.Empty);
}
public string SubStringHtml(object InputHtml, object StartIndex, object Length)
{
return SubStringText(GetPlainTextFromHtml(InputHtml.ToStr ing()), StartIndex, Length);
}


<asp:Label ID="lbl_Abstract" runat="server" Text='<%#SubStringHtml(Eval("Contents"),0,300)%>'></asp:Label>
خلاصه خبر هم نشون داده ميشه
:منتها مشکلي که وجود داره اينه که خلاصه خبر مثلاً به شکل زير نشون داده ميشه

<pخبر جديد اينه که<

در صورتي که فقط بايد نشون داده بشه:

خبر جديد اينه که
به نظرتون چه طوري اين مشکل رو ميشه حل کرد؟

راستي وقتي به جاي ckeditor از تکست باکس استفاده مي کنم
اين مشکل ديگه وجود نداره.

منبعي که ازش کمک گرفتم براي کدهاي بالا: http://how2learnasp.net/article.aspx?code=4a0e5bb4-31fe-435f-97f9-088db9b4621d

لطفاً کمکم کنيد دوستان.

hamed_hossani
چهارشنبه 24 آبان 1391, 22:27 عصر
سلام
ویرایشگر نوسته ها را با کد html ذخیره می کنه! در ویرایشگر یک خط بنویس و دکمه سورس=منبع >بالا گوشه رو بزن!
پیشنهاد من : از شی litral استقاده کن! به جای استفاده از textBox برای نشان دادن متن پست ها

هنگام کوتاه کردن متن بررسی کن تگ <p> رو حذف نکنی!

fakhravari
چهارشنبه 24 آبان 1391, 22:32 عصر
public static string Html_Del(string Html)
{
return Regex.Replace(Html, "<[^>]*>", string.Empty);
}
با کد بالا HTML نیست دیگر!
اون تگ P چطوری اومده!

bftarane
پنج شنبه 25 آبان 1391, 07:17 صبح
پیشنهاد من : از شی litral استقاده کن! به جای استفاده از textBox برای نشان دادن متن پست ها
من از textbox استفاده نمي کنم براي نشان دادن از label استفاده مي کنم اگه اينکه گفتيد textbox اشتباه لپي بوده و منظورتون ليبل بوده ميشه دليل استفاده از ليترال به جاي ليبل رو بگيد من متوجه نمي شم چه ربطي مي تونه به اين مشکل داشته باشه.


ببينيد من يه عکس از جدولم گذاشتم تا موضوع روشن تر بشه
94943
خوب الان در فيلد Contents داخل تگ p اطلاعات من وجود دارن.
substring که گرفته ميشه تگ p هم جزو رشته محسوب مي کنه و اين مشکل پيش مياد.

با حرف آقاي فخرآوري موافقم. يعني اون کد که ايشون اشاره کردن به هر دليلي اينجا کار نمي کنه درسته؟
نمي دونم شايد در web.config بايد چيزي اضافه مي کردم يا حالا هر کار ديگه اي که انجامش ندادم اگه اينطوره لطفاً راهنمايي کنيد.
using هايي که در صفحه نوشتم رو هم در زير مي زارم شايد در پاسخ دادن شما مفيد باشه

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;
using System.Text.RegularExpressions;

fakhravari
پنج شنبه 25 آبان 1391, 10:32 صبح
مگر <P> جز HTML نیست!!
چرا کار نکنه؟؟؟

ya30ien2
پنج شنبه 25 آبان 1391, 11:50 صبح
خوب واسه اینه که تگ p پایانش کامل نشده یعنی به </p> نرسیده برای نمایش
فکر میکنم هنگام ذخیره تا اونجایی که میخوای داخل خلاصه نمایش داده بشه از چند کارکتر که فکر میکنی امکان استفاده در کنار هم ازشون در خبرها کم باشه برای ادامه مطلب استفاده کنی
مثلا : "@#"
تا اونجایی که میخوای برای خلاصه خبر قرار بدی بعدش اینو بنویسی
و در فراخوانی بگید هر وقت به این کارکترها کنار هم رسید "..."
البته بازم نظر اساتید ببینم چی باشه

bftarane
پنج شنبه 25 آبان 1391, 13:58 عصر
دو تا نکته متوجه شدم
اولاً مثل اينکه بايد طول متن خبر حتماً از 300 کاراکتر که براي خلاصه خبر در نظر گرفتم بيشتر باشه
اينجوري مشکل آخر خلاصه خبر حل ميشه
ولي مشکل اول خلاصه خبر هنوز باقيه
که اون هم با کد زير حل شد

Text='<%#SubStringHtml(Eval("Contents"),2,200)%>'></asp:Label>
يعني به جاي 0 اومدم 2 گذاشتم
ولي چه جوري بايد چک کنم طول متنم حتماً از 300 کاراکتر بيشتر باشه هنوز امتحان نکردم ببينم مي تونم يا نه اگه مشکل داشتم ميام مي پرسم. اگرم کسي اينو بلده لطفاً بنويسه. اونقدر کار دارم نمي دونم به کدومش برسم.
اگرم راه بهتري به نظرتون ميرسه مشتاقم بشنوم.
ممنونم.