انجمن‌هاي فارس وب

نسخه کامل: نمایش اشتباه اطلاعاتی که دارای enter باشند
شما در حال بازدید از بایگانی ارسال های انجمن هستید این نسخه کامل نیست : برای مشاهده نسخه کامل اینجا کلیک کنید
سلام
روی یکی از صفحات برنامم ،یه text Box گذاشته ام و خاصیت TextMode="multiline" را هم تنظیم کردم تا به صورت مالتی لاین باشد.
مشکلم اینجاست که اگر کاربر موقع وارد کردن متن در text Box ،دکمه ی Enter را بزند تا به خط بعدی برود ،هنگامی که من می خواهم از دیتابیس این اطلاعات را استخراج کنم و در یک گرید ویو نمایش بدم،تمام آنها را در یک خط نشان می دهد.
در صورتی که من می خوام این اطلاعات به همان صورتیکه کاربر نوشته ،نمایش داده شوند.
حجم این اطلاعات که در یک textbox نوشته می شود ،حتی ممکن است یه اندازه ی یک صفحه هم باشد.
موقع وارد کردن اطلاعات در text box من از تگ <BR> به جای استفاده از زدن دکمه ی اینتر استفاده کردم ولی این بار هم خطا داد:

A potentially dangerous Request.Form value was detected from the client  (txtBody="ziba<BR> diba<BR>").

البته برای رفع خطای بالا،به من پیشنهاد شد که مقدار False برای خصیصه ValidateRequest صفحه ،قرار بدم.این دفعه خطا نگرفت ولی وقتیکه در گرید ویو نمایش می داد ،بازم همشون پشت سرهم بودن+اینکه یه <BR> هم بینشون دیده می شد.
لطفا راهنمایی کنید.

سلام
از اين تكس باكس براي ورود چه نوع اطلاعاتي مي خواي استفاده كني ؟
از كنترل هاي ديگه هم واسه اين كار تست زدي ؟

ahmadahmadi نوشته است:
سلام
از اين تكس باكس براي ورود چه نوع اطلاعاتي مي خواي استفاده كني ؟
از كنترل هاي ديگه هم واسه اين كار تست زدي ؟


اطلاعات متنی .در واقع توی این تکست باکس می خوام یه توضیحاتی در مورد خلاصه ی یک کتاب بدم.
نه.فقط با تکست باکس امتحان کردم.

من قصدم بود که برای نمایش،از طریق گرید ویو ،طوری عمل کنم که وقتی کاربر روی یک لینک عنوان از خلاصه کتاب که درهر سطر گرید ویو گذاشته ام،کلیک می کند،محتویات یک فایل متنی را برایش در صفحه ای دیگر نمایش بدم ولی می خواستم که این صفحه ، دارای قالب سایتم هم باشد ،یعنی هدر و منو ها یی که در صفحه ی اول هستند در صفحه ای که قرار است این فایل درش نمایش داده بشه ،باشند ،ولی نتونستم اینو پیادش کنم.(چون وقتی صفحه باز میشد ، محتویات فایل txt را بدون قالب سایتم نشون میداد.)
توی این پست سوالمو مطرح کردم :[ جهت مشاهده لينك عضو شويد ! ]


برای همین مجبور شدم برای وارد کردن اطلاعاتم از فایل استفاده نکنم و اون هارو با textBox وارد کنم.
نمی دونم کارم درسته یا نه؟

سلام
شما براي اين كار اول بايد چند چيز ياد بگيري اگر ياد نداري
1. استفاده از MasterPage و نحوه بكارگيري به عنوان صفحه پايه
2. استفاده از Query String براي پاس كردن مقدار بين صفحات (كه بهترين گذينه هست و يا استفاده از كوكي و سنشن)
3. پيشنهاد به جاي استفاده از فايل Txt از بانك يا xml استفاده كن

روش كار:
شما يك صفحه MasterPage درست مي كني و هر وقت خواستي يك صفحه جديد بسازي كه همين قالب داشته باشه كافيه از اين صفحه ارث بري كنه
بعد زماني كه لينك كاربر كليك مي كنه يك ID يا Name به وسيله Query String به صفحه جديد پاس مي كنه و برمناي اون ID در صفحه نمايش اطلاعات از بانكت اطلاعات WHERE مي كني و نمايش مي دي
تمام
بر هر كدام هم تو سايت asp.net فيلم هاي آموزشي خوبي هست كامل ياد مي ده.
[ جهت مشاهده لينك عضو شويد ! ]
[ جهت مشاهده لينك عضو شويد ! ]

سرچ يزن اگر باز هم سوالي بود ....
موفق باشيد.
منم الان مشکلم تونمایشش است.وقتیکه رفتم تو صفحه ی بعد متنو چه جوری نمایش بدم؟
مثلا متنی که حدود یک صفحه است مخصوصا اگر این متن دارای enter هم باشد.همهشو می خواد پشت سر هم نشون بده.غمگین(از چه کنترلی برای نمایشش استفاده کنم؟)

روشی که شما می فرمایید برای موقعی خوب است که متن چند خطی نداشته باشیم.اما وقتی متن دارای enter هم باشد ،هم در موقع ذخیره شدنش در بانک اطلاعاتی و هم در نمایشش ،ایجاد مشکل میکنه.


اگر میتونستم فایل متنیو در همچین صفحه ای باز کنم،دیگه مشکلی نبود.اما وقتی تمام این موارد 1و2 را انجام میدم ،اگر در لینک ،url فایل متنیمو بدم فقط فایل متنیو باز میکنه و نشون میده ،بدی این روش اینه که این فایلو نمی تونم داخل صفحه ای که قالب سایتم هست باز کنم.حالا یا من بلد نیستم یا اینکه اصلا انجام این کار شدنی نیست.یکی از سوالام اینه که کسی با این روش تونسته ؟اگر نه دیگه سرش وقت نذارم.

با گریدویو امتحان کردم برای نمایش،اما درست نشون نمی داد،همه را در یک خط نشون میده.در صورتیکه متن اصلی ،هنگام نوشتنش شامل چندین پاراگراف بوده،همش که توی یه خط نبود؟

یکی از دوستان گفتند که باید از FckEditor استفاده کنی.من تا حالا با این کنترل کار نکردم.می ترسم یه چند روزم وقت بذارم سر این کنترل ولی جوابی که میخوامو ،نده.
شما تا حالا با این کنترل کار کردید؟
سلام
من فكر مي كنم مشكل شما سر اين كه فايل هاي با پسوند .txt فكر مي كنم ذخيره كردين كه اين ها header هاي شناسايي براي html ندارن و enter وب رو هم نمي شناسن
شما چرا از بانك استفاده نمي كنيد. در ساده ترين حالت از Access استفاده كنيدكه كار باهاش خيلي راحت (البته اگر نمي خواي آپلود كني) و صفحه اي كه با MasterPage مي سازيد متني كه مي خواهيد در اون نمايش بديد حجمش مهم نيست فقط كافي يكDiv تعريف كنيد با يك ID و بعدبراش runat=server قرار بديد. در تابع Page_Load با اون ID يك Propertes داره به نام InnerHtml كه هر چي بهش بدي تو صفحه نشون مي ده
براي ذخيره هم از كنترل FreeTextBox استفاده كن همين عبارت سرچ كن سايت توليد كنندش پيدا مي كني كه رايگان و براي آموزش هم به اين لينك برو فارسي
[ جهت مشاهده لينك عضو شويد ! ]

در نهايت اگر باز هم اصرار به استفاده از فايل تكس داري اول بايد به وسيله توابع كلاس File متن داخلش بخوني ونشون بدي مهم روش ذخيره كه از كنترل درستي استفاده كني

موفق باشيد.
هر دو روشو امتجان کردم.(بانک sql , فایل)
من مشلکم تونمایش اطلاعاته .


آخه وقتی از گریدویو استفاده میکنم،اطلاعاتمو درست نمایش نمیده،حتی من با استفاده از تابعی ،قبل از اینکه اطلاعات در بانک اطلاعاتی sql ذخیره بشند ،جاهایی از متنو که دارای enter بود ،تبدیل به تگ </BR> میکردم که دیگه موقع نمایش در گریدویو مشکل نداشته باشه ولی باز هم گریدویو درست نمایش نمیداد.
الانم فکر میکنم اگر از این کنترل برای ذخیره استفاده کنم،
موقع نمایش در گرید ویو همین مشکل باشه.
مثلا عبارتی که دارای اینتر بود ،موقع نمایش در گریدویو اینجوری بود:

saba<br />star<br /> 



وقتی هم از فایل متنی استفاده می کنم ، اطلاعات درست نمایش داده میشه ،چونکه فقط تنها کاری که انجام میشه ،اینه که فایل متنی را باز میکند.اما حیف که این فایل قالب سایتو نداره.

shamstabrizi عزیز

این کاری که می خواهید بکنید یه روش راحت داره ، زمانی که می خواهید در گرید ویو نمایش دهید ، به حالت Template برید و از ابزار Place Holder استفاده کنید ، اونوقت متنتون رو می تونید در اون نمایش بدید ، این ابزار تمامی tag های html ی رو می شناسه و به راحتی شما می تونید تگ <br> رو برای چند خط شدن به کار ببرید
وقتی هم که می خواهید به حالت ویرایش برید از یه text box ی که multiline باشه می تونید استفاده کنید .

در ضمن روشی که در اون ValidateRequest را False کنی بهتره اصلا استفاده نکنی چون به شدت امنیت سایت رو پایین می یاره و درصد هک سایت به شدت بالا می ره ...

اگه مشکلی داشتی بگو
هر چند من به این نتیجه رسیدم که باید از فایل استفاده کنم چون حجم مطالبم بالاست ولی روش شما را هم امتحان کردم.
از Place Holder استفاده کردم ولی موقعی که اونو بایندش کردم خطای زیر را داد:

Specified cast is not valid.

اینم کدش:

<ItemTemplate>
                        <asp:PlaceHolder ID="PlaceHolder1" runat="server" Visible='<%# Eval("body") %>'></asp:PlaceHolder>
                    </ItemTemplate>

مرجع آدرس ها