PDA

View Full Version : سوال: نمایش پیغام به جای نمایش خطای کد نویسی



mohsen.nsb44
پنج شنبه 24 تیر 1389, 10:02 صبح
دوستان در نظر بگیرید که ما یک تکست باکس داریم که فیلد از نوع nvarchar(50) هستش حالا کاربر به جای 50 کاراکتر 100 کاراکتر وارد میکنه که منجر به بروز خطا میشه چکار باید کرد که اگه بیش از حد مجاز وارد کرد یک پیغام داده بشه که این تعداد معتبر نیست و دیگه خطای کد نویسی دیده نشه

Mostafa_Dindar
پنج شنبه 24 تیر 1389, 10:25 صبح
بهتر است اینکار رو در Bussiness Logic Layer انجام بدید , برسی کنید , که طول رشته بیشتر از 50 کاراکتر نباشد , در غیر اینصورت یک Exception از نوع ArgumetOutOfRange رو Throw کنید و در UI اون رو هندل کنید و پیام متناسب به کاربر نشان دهید

موفق باشید

mohsen.nsb44
پنج شنبه 24 تیر 1389, 10:32 صبح
بهتر است اینکار رو در Bussiness Logic Layer انجام بدید , برسی کنید , که طول رشته بیشتر از 50 کاراکتر نباشد , در غیر اینصورت یک Exception از نوع ArgumetOutOfRange رو Throw کنید و در UI اون رو هندل کنید و پیام متناسب به کاربر نشان دهید

موفق باشید
همونطور که می دونید من یه فرد مبتدی هستم و تازه اول راه هستم میشه یکم بیشتر و ساده تر توضیح بدین در مورد چیزایی که گفتید اثلا هیچ اطلاعاتی ندارم

Mostafa_Dindar
پنج شنبه 24 تیر 1389, 10:39 صبح
همونطور که می دونید من یه فرد مبتدی هستم و تازه اول راه هستم میشه یکم بیشتر و ساده تر توضیح بدین در مورد چیزایی که گفتید اثلا هیچ اطلاعاتی ندارم
اونها رو فراموش کنید , اینطور بنویسید :

if (YourTextBox.Text.Length > 50)
lblError.Text = "شما تنها مجاز به استفاده حداکثر 50 کاراکتر هستید";

روز خوش

mohsen.nsb44
پنج شنبه 24 تیر 1389, 10:57 صبح
اونها رو فراموش کنید , اینطور بنویسید :

if (YourTextBox.Text.Length > 50)
lblError.Text = "شما تنها مجاز به استفاده حداکثر 50 کاراکتر هستید";

روز خوش
دوست عزیز از کد شما استفاده کردم زمانی که کمتر از 20 کلمه وارد می کنم اطلاعات ثبت میشه اما وقتی بیش از 20 کاراکتر وارد می کنم ارور زیر رو میده

Inserting is not supported by data source 'SqlDataSource1' unless InsertCommand is specified.
کد استفاده شده


if (TextBox1.Text.Length > 20)
Label1.Text = " 20 ";
else SqlDataSource1.InsertCommand = "insert into table1(maharat)values(N'" + TextBox1.Text + "')";
SqlDataSource1.Insert();

GridView1.DataBind();

Mostafa_Dindar
پنج شنبه 24 تیر 1389, 11:01 صبح
دوست عزیز از کد شما استفاده کردم زمانی که کمتر از 20 کلمه وارد می کنم اطلاعات ثبت میشه اما وقتی بیش از 20 کاراکتر وارد می کنم ارور زیر رو میده

Inserting is not supported by data source 'SqlDataSource1' unless InsertCommand is specified.
کد استفاده شده


if (TextBox1.Text.Length > 20)
Label1.Text = " 20 ";
else SqlDataSource1.InsertCommand = "insert into table1(maharat)values(N'" + TextBox1.Text + "')";
SqlDataSource1.Insert();

GridView1.DataBind();


خودت یکم فکر کن , به جواب میرسی .

Peyman.Gh
پنج شنبه 24 تیر 1389, 11:15 صبح
حالا کاربر به جای 50 کاراکتر 100 کاراکتر وارد میکنه که منجر به بروز خطا میشه چکار باید کرد
اصلاً اجازه وارد کردن کاراکتر بیش از مقدار تعیین شده را ندهید !


اونها رو فراموش کنید , اینطور بنویسید :

if (YourTextBox.Text.Length > 50)
lblError.Text = "شما تنها مجاز به استفاده حداکثر 50 کاراکتر هستید";

روز خوش

این روش سمت سرور میباشد.
استفاده از RegularExpression مناسب تر میباشد.
بطور مثال شما TextBox1 را برای 10 کاراکتر محدود میکنید :
<asp:RegularExpressionValidator ID="Validator"
ControlToValidate="TextBox1" ErrorMessage="Error"
ValidationExpression="^[\s\S]{0,10}$"
runat="server" SetFocusOnError="true" />

موفق باشید.

rana-writes
پنج شنبه 24 تیر 1389, 11:30 صبح
سلام
توی خاصیتهای TextBox، گزینه MaxLength رو محدود کنین و از کدی که آقای دیندار نوشتن استفاده کنین
باید جواب بده


استفاده از RegularExpression مناسب تر میباشد.
بطور مثال شما TextBox1 را برای 10 کاراکتر محدود میکنید :



1.<asp:RegularExpressionValidator ID="Validator"
2. ControlToValidate="TextBox1" ErrorMessage="Error"
3. ValidationExpression="^[\s\S]{0,10}$"
4. runat="server" SetFocusOnError="true




این روش هم خوبه

Mostafa_Dindar
پنج شنبه 24 تیر 1389, 11:33 صبح
اصلاً اجازه وارد کردن کاراکتر بیش از مقدار تعیین شده را ندهید !



این روش سمت سرور میباشد.
استفاده از RegularExpression مناسب تر میباشد.
بطور مثال شما TextBox1 را برای 10 کاراکتر محدود میکنید :
<asp:RegularExpressionValidator ID="Validator"
ControlToValidate="TextBox1" ErrorMessage="Error"
ValidationExpression="^[\s\S]{0,10}$"
runat="server" SetFocusOnError="true" />

موفق باشید.


Validation میتونه در چندین سطح انجام بشه


UI با استفاده از جاوااسکریپت ( Validation Controls یا jQuery) . تا جایی که امکان داشته باشد باید سعی کنیم از ورود داده های نا معتبر جلوگیری کنیم . ولی از آنجایی که عملکرد آنها مبتنی بر Java Script هست , کاربر میتواند آنها رو غیر فعال کرده و دور بزندن , پس به هیچ وجه مطمئن نیست .
در BLL . این حالت مطمئن تر از مورد اول است , ضمن اینکه جاهایی حتما باید از این مورد استفاده کرد . ( خواستی واست بگم )
سوم در سطح دیتابیس با استفاده از Check Constraint ها . که در نهایت هر جور داده نامعتبشر به هر شکلی به سطح دیتابیس رسید , در این مرحله از درج یا بروز رسانی اون جلوگیری میکنه .


پاورقی : همانطور که rana-writes (http://www.barnamenevis.org/forum/member.php?u=62579) گفت اصلا نیازی به Regular Expression Validator نبوده . میتونستید از خاصیت MaxLengthاستفاده کنید .

موفق باشید

mohsen.nsb44
پنج شنبه 24 تیر 1389, 11:51 صبح
دوستان همانطور که rana-writes (http://www.barnamenevis.org/forum/member.php?u=62579) فرمودند با در نظر گرفتن max length می توانیم تعداد حداکثر کاراکتر هایی که در یک تکست باکس ذخیره می شوند تعین کرد حال چه کار باید کرد حتما باید مثلا 11 رقم وارد شود نه کمتر نه بیشتر

rana-writes
پنج شنبه 24 تیر 1389, 14:33 عصر
اینجا از چیزی که آقای دیندار گفتن استفاده کنین همین کد:


if (YourTextBox.Text.Length > 50)
lblError.Text = "شما تنها مجاز به استفاده حداکثر 50 کاراکتر هستید";

یعنی اندازه تکست باکس رو کنترل کنین به شکل دستی


if (textbox1.Text.Length<11)
{
lblerror.Text = "شما باید حتما 11 رقم وارد کنید";
}

یه همچین چیزی