افرایش سرعت در نوشتن صفت (Attribute)های ویوو مدل ها
حال برای تعریف هر ویوو مدل تنها کافی است آن را تعریف و در بالای آن، از اتریبیوت دلخواه استفاده و متن ارور آن را مطابق کلاس فوق وارد میکنیم، مثلا:
حال میتوان کار را سادهتر نیز کرد و تمام اتریبیوتها را به یک قطعهکد (Snippet) تبدیل کرد. برای این کار از طریق File>Preferences وارد منوی User Snippet میشویم و بعد زبان سی شارپ را انتخاب و بعد Snippetهای خود را اضافه میکنیم:
حال تنها کافی است اسم اتریبیوت مورد نظر را تایپ کنیم و آن Snippet را از پنجره Intellisense انتخاب کنیم.
در اکثر پروژهها، متن خطای اکثر ویوو مدلها شبیه هم است و تفاوت خاصی ندارند؛ مثلا اتریبیوت Required، متن خطایش معمولا با این مضمون است: "لطفا فیلد ... را وارد نمایید." ما میتوانیم تمام این متنهای خطاها را در جایی دیگر تعریف و در متن خطای اتریبیوتهایمان از آن استفاده کنیم که باعث میشود بعدا اگر خواستیم متن خطاها را تغییر دهیم (مثلا در مورد اتریبیوت Required متن "لطفا فیلد ... را وارد نمایید" را با * عوض کنیم) در تمام پروژه این تغییر اعمال میشود و دیگر نیازی نیست تمامی متن خطاها را یکی یکی تغییر دهیم و نگهداری کدها برای بعد راحتتر میشود.
برای شروع یک کلاس را برای متن خطاهای اتریبیوتهایمان تعریف میکنیم:
public static class AttributesErrorMessages { public const string RequiredMessage = "لطفا {0} را وارد نمایید"; public const string MinLengthMessage = "{0} نباید کمتر از {1} کاراکتر باشد"; public const string MaxLengthMessage = "{0} نباید بیشتر از {1} کاراکتر باشد"; public const string RegularExpressionMessage = "{0} را به درستی وارد نمایید"; public const string StringLengthMessage = "{0} باید بین {2} کاراکتر و {1} کاراکتر باشد"; public const string RemoteMessage = "با این {0} قبلا ثبت نام شده است"; }
[StringLength(110, MinimumLength = 5, ErrorMessage = AttributesErrorMessages.StringLengthMessage)] public string TestProp { get; set; }
{ "Required":{ "prefix":"required", "body":[ "[Required(ErrorMessage = AttributesErrorMessages.RequiredMessage)]" ], "description":"Required attribute" }, "Max Length":{ "prefix":"maxlength", "body":[ "[MaxLength(${1:number}, ErrorMessage = AttributesErrorMessages.MaxLengthMessage)]" ], "description":"Max length attribute" }, "Min Length":{ "prefix":"minlength", "body":[ "[MinLength(${1:number}, ErrorMessage = AttributesErrorMessages.MinLengthMessage)]" ], "description":"Min length attribute" }, "String Length":{ "prefix":"stringlength", "body":[ "[StringLength(${1:maximumNumber}, MinimumLength = ${2:minmumNumber}, ErrorMessage = AttributesErrorMessages.StringLengthMessage)]" ], "description":"String length attribute" }, "Email Address":{ "prefix":"emailaddress", "body":[ "[EmailAddress(ErrorMessage = AttributesErrorMessages.RegularExpressionMessage)]" ], "description":"Email address attribute" }, "Regular Expression":{ "prefix":"regularexpression", "body":[ "[RegularExpression(\"${1:patternString}\", ErrorMessage = AttributesErrorMessages.RegularExpressionMessage)]" ], "description":"Regular expression attribute" }, "Remote Expression":{ "prefix":"remote", "body":[ "[Remote(\"${1:action}\", \"${2:controller}\", ErrorMessage = AttributesErrorMessages.RemoteMessage)]" ], "description":"Remote attribute" } }