PDA

View Full Version : اعتبار سنجی فرم و linq to sql



R_Rajaee_Rad
چهارشنبه 02 مرداد 1392, 21:07 عصر
سلام
توی آموزش ها دیدم توی مدل میان این کدها رو اضافه میکنن برای اعتبار سنجی
مثلا

[Required(ErrorMessage=" لطفا نام خود را وارد کنید")]
public string Name { get; set; }

حالا که کلاسهای linq شدن مدل برنامه ما ا,ین کدها رو کجای مدل کنم؟

parvizwpf
پنج شنبه 03 مرداد 1392, 14:33 عصر
الان شما با چی کار میکنید linq یا ef? هر کدام رو که داشته باشید میتونید برای هر بار استفاده متفاوت از مدلهاتون بیاید به همون صورت بالا ، یه ViewModel بسازید و همونطوری که نوشتید اعتبار سنجی کنید.

R_Rajaee_Rad
پنج شنبه 03 مرداد 1392, 15:45 عصر
الان شما با چی کار میکنید linq یا ef? هر کدام رو که داشته باشید میتونید برای هر بار استفاده متفاوت از مدلهاتون بیاید به همون صورت بالا ، یه ViewModel بسازید و همونطوری که نوشتید اعتبار سنجی کنید.
http://www.shiaupload.ir/images/48708166529886667622.jpg
دوست عزیز کل مدل برنامه ام این فایل کلاس linq to sql هست
وقتی بازش میکنم انبوهی از کلاس و فانکشن و متدهای دستیاب میبینم
میخوام بدونم این کدهای اعتبار سنجی رو دقیقا کجای این همه کد باید بنویسم؟
http://barnamenevis.org/ http://www.shiaupload.ir/images/48708166529886667622.jpg

parvizwpf
جمعه 04 مرداد 1392, 02:45 صبح
یه چیزی رو بدونید. الان ممکنه با مثلا کلاس یوزر سمت ویو کار داشته باشید یه جا دیگه مسیج . جای دیگه کامنت و...... . حالا توی هر کدوم ممکنه فقط اندکی از فیلدها نیاز باشه. یا باید بیاد توی پروژتون یه فولدر بزارید و برای هر جایی که نیاز دارید یه ViewModel تعریف کنید شامل اون فیلدهایی که فقط سر و کار دارید. یا بیاید از قابلیتهای Exclude و Include بهره ببرید. حالا توی اون کلاسها که ساختید میاید اعتبار سنجی رو به هر فیلد اختصاص میدید. اعتبار سنجی داخل فایلهای خود dbml رو فراموش کنید بیاریدش سمت ویو مدلها.

R_Rajaee_Rad
جمعه 04 مرداد 1392, 08:47 صبح
یه چیزی رو بدونید. الان ممکنه با مثلا کلاس یوزر سمت ویو کار داشته باشید یه جا دیگه مسیج . جای دیگه کامنت و...... . حالا توی هر کدوم ممکنه فقط اندکی از فیلدها نیاز باشه. یا باید بیاد توی پروژتون یه فولدر بزارید و برای هر جایی که نیاز دارید یه ViewModel تعریف کنید شامل اون فیلدهایی که فقط سر و کار دارید. یا بیاید از قابلیتهای Exclude و Include بهره ببرید. حالا توی اون کلاسها که ساختید میاید اعتبار سنجی رو به هر فیلد اختصاص میدید. اعتبار سنجی داخل فایلهای خود dbml رو فراموش کنید بیاریدش سمت ویو مدلها.
یعنی به صورت دستی خودم یه view و یه مدل درست کنم و اعتبار سنجی اینا و غیره؟
بعد تداخلی چیزی باهم دیگه نمیخورن؟
کلاسهای ViewModel جدید از نوع Partial باید باشه؟

parvizwpf
چهارشنبه 09 مرداد 1392, 10:30 صبح
ویو مدل فقط یه کلاسه دقیقا مثله انتیتیهای شما ولی با این تفاوت که دقیقا همون چیزهایی که برای مثلا یه ویو خاص احتیاج دارید.فقط همون فیلدهایی ککه نیازند میان حالا با هر تایپی.
لزومی نداره partial باشن. انگار داری یه انتیتی مینویسی همین.حالا میتونید توی اون کلاسها هم validation رو هر فیلد بزارید

hakim22
چهارشنبه 09 مرداد 1392, 17:17 عصر
وقتی با Ado.net entity data model کار میکنید و DataBase First دارید یعنی بانک شما آماده است و کدها Generate میشوند بهترین راه استفاده از Data Annotations یا همون قیدهایی مثل Required و Range و ... استفاده از Metadata است.

کلاسهایی که EF میسازه به صورت Partial هست و میشه یک فایل با یک نام دیگه ولی با همون کلاس به فولدر Model اضافه کرد.
فرض کنیم شما در EF یک کلاس دارید با عنوان UserAccount حالا میخواهید به این کلاس آماده Metadata اضافه کنید و اونو قید گذاری کنید.

روی فولدر Models کلیک راست کنید و یک Class اضافه کنید.



//---- UserAccountMetaData.cs = FileName
namespace myasp.web.models

{
[MetaDataType(typeof(UserAccountMetadata))]

public partial class UserAccount
{

}

public class UserAccountMetaData
{

[DisplayName("نام کاربری")]
[Required(ErrorMessage="الزامی است")]
public string UserName {get;set;}
}



عنوان مشخصه ها property باید با عنوان آنها در EF یکسان باشد. بهتر است از مسیر فایل Edmx آنها را یافته و مستقیما درون فایل Metadata کپی کنید و آنهایی را که لازم ندارید حذف کنید.