আচরণ [MaxLength]
ও [StringLength]
গুণাবলীর মধ্যে পার্থক্য কী ?
আমি যতদূর বলতে পারি ( [MaxLength]
একটি অ্যারের সর্বাধিক দৈর্ঘ্যকে বৈধতা দিতে পারে এমন ব্যতিক্রম সহ ) এগুলি কি অভিন্ন এবং কিছুটা অপ্রয়োজনীয়?
আচরণ [MaxLength]
ও [StringLength]
গুণাবলীর মধ্যে পার্থক্য কী ?
আমি যতদূর বলতে পারি ( [MaxLength]
একটি অ্যারের সর্বাধিক দৈর্ঘ্যকে বৈধতা দিতে পারে এমন ব্যতিক্রম সহ ) এগুলি কি অভিন্ন এবং কিছুটা অপ্রয়োজনীয়?
উত্তর:
সারণী মান ক্ষেত্রটি যখন ডেটাবেস তৈরি করে তখন কত বড় করা যায় তা নির্ধারণ করার জন্য সত্তা ফ্রেমওয়ার্কের জন্য ম্যাক্স লেংথ ব্যবহার করা হয়।
এমএসডিএন থেকে:
কোনও সম্পত্তিতে অনুমোদিত অ্যারে বা স্ট্রিং ডেটার সর্বাধিক দৈর্ঘ্য নির্দিষ্ট করে।
স্ট্রিংলেংথ এমন একটি ডেটা টিকা যা ব্যবহারকারীর ইনপুটকে বৈধতার জন্য ব্যবহার করা হবে।
এমএসডিএন থেকে:
ডেটা ক্ষেত্রে অনুমোদিত মাপের অক্ষরের সর্বনিম্ন এবং সর্বাধিক দৈর্ঘ্য নির্দিষ্ট করে।
MaxLengthAttribute
, যখন ইএফ স্বীকৃতি দেয়StringLengthAttribute
[MaxLength]
তবুও কেন ত্রুটিযুক্তি আছে?
কিছু তাত্পর্যপূর্ণ কিন্তু অত্যন্ত দরকারী অতিরিক্ত তথ্য যা আমি সবেমাত্র অন্য একটি পোস্ট থেকে শিখেছি, তবে এর জন্য ডকুমেন্টেশনগুলি খুঁজে পেতে পারে না (যদি কেউ এমএসডিএন এর সাথে একটি লিঙ্ক ভাগ করতে পারে তবে এটি আশ্চর্যজনক হবে):
এই বৈশিষ্ট্যগুলির সাথে যুক্ত বৈধতা বার্তাগুলি প্রকৃতপক্ষে বৈশিষ্ট্যের সাথে যুক্ত স্থানধারীদের প্রতিস্থাপন করবে। উদাহরণ স্বরূপ:
[MaxLength(100, "{0} can have a max of {1} characters")]
public string Address { get; set; }
অক্ষরের সীমা ছাড়িয়ে গেলে নিম্নলিখিতগুলি আউটপুট দেবে: "ঠিকানায় সর্বোচ্চ 100 টি অক্ষর থাকতে পারে"
আমি যে জায়গাগুলি সম্পর্কে সচেতন তা হ'ল:
প্রাথমিকভাবে এটি নির্দেশ করার জন্য ব্লাউড্রাককে অনেক ধন্যবাদ ।
যখন আমরা উভয় [MaxLength]
এবং [StringLength]
বৈশিষ্ট্যগুলি ব্যবহার করি তখন নিম্নলিখিতগুলি ফলাফলগুলি হয় EF code first
। যদি উভয়ই ব্যবহৃত হয় [MaxLength]
তবে রেস জয়ী। studentname
নীচের শ্রেণিতে পরীক্ষার ফলাফল কলামে দেখুন
public class Student
{
public Student () {}
[Key]
[Column(Order=1)]
public int StudentKey { get; set; }
//[MaxLength(50),StringLength(60)] //studentname column will be nvarchar(50)
//[StringLength(60)] //studentname column will be nvarchar(60)
[MaxLength(50)] //studentname column will be nvarchar(50)
public string StudentName { get; set; }
[Timestamp]
public byte[] RowVersion { get; set; }
}
সমস্ত ভাল উত্তর ... বৈধতার দৃষ্টিকোণ থেকে, আমি আরও লক্ষ্য করেছি যে ম্যাক্সেলংথ কেবলমাত্র সার্ভারের পাশেই বৈধ হয়ে গেছে, যখন স্ট্রিংলেংথ ক্লায়েন্টের পক্ষেও বৈধ হয়ে গেছে।
ম্যাক্সলেংথ্যাট্রিবিউট মানে সর্বোচ্চ। অ্যারের দৈর্ঘ্য বা স্ট্রিং ডেটা অনুমোদিত
স্ট্রিংলেংথ্যাট্রিবিউট মানে ন্যূনতম। এবং সর্বাধিক ডেটা ক্ষেত্রে অনুমোদিত অক্ষরের দৈর্ঘ্য
পরিদর্শন http://joeylicc.wordpress.com/2013/06/20/asp-net-mvc-model-validation-using-data-annotations/
আরেকটি বিষয় লক্ষ্যনীয় যে ম্যাক্সেলংথ অ্যাট্রিবিউটে আপনি কেবলমাত্র সর্বাধিক প্রয়োজনীয় ব্যাপ্তি সরবরাহ করতে পারবেন কোনও ন্যূনতম প্রয়োজনীয় ব্যাপ্তি নয়। যদিও StringLength আপনি প্রদান করতে পারেন উভয় ।
আমি আমার প্রসঙ্গে নীচে লাইন যুক্ত করে এটি সমাধান করেছি:
modelBuilder.Entity<YourObject>().Property(e => e.YourColumn).HasMaxLength(4000);
একরকম, [MaxLength]
আমার জন্য কাজ করে না।
কোনও ওয়েবপৃষ্ঠায় কোনও ফর্ম থেকে পাঠ্যের জন্য সর্বাধিক ইনপুট দৈর্ঘ্যকে সীমাবদ্ধ করতে অ্যাট্রিবিউটটি ব্যবহার করার সময়, স্ট্রিংলেংথটি সর্বোচ্চ দৈর্ঘ্যের এইচটিএমএল বৈশিষ্ট্যটি তৈরি করেছে বলে মনে হয় (কমপক্ষে এমভিসি 5 দিয়ে আমার পরীক্ষায়)। তারপরে যেটি বেছে নেবে তা নির্ভর করে আপনি কীভাবে ব্যবহারকারীকে সতর্ক করতে চান যে এটি সর্বাধিক পাঠ্য দৈর্ঘ্য। স্ট্রিংলেথ অ্যাট্রিবিউট দিয়ে, ব্যবহারকারী কেবল অনুমোদিত দৈর্ঘ্যের বাইরে টাইপ করতে সক্ষম হবে না। সর্বাধিক দৈর্ঘ্যের বৈশিষ্ট্য এই এইচটিএমএল বৈশিষ্ট্যটিকে যুক্ত করে না, পরিবর্তে এটি ডেটা বৈধতা বিশিষ্টতা উত্পন্ন করে, এর অর্থ ব্যবহারকারী ব্যবহারকারী নির্দেশিত দৈর্ঘ্যের বাইরেও টাইপ করতে পারে এবং যে যখন পরবর্তী ক্ষেত্রটিতে চলে আসে বা ক্লিকগুলি জমা দেয় তখন জাভাস্ক্রিপ্টে বৈধতার উপর দীর্ঘতর ইনপুট আটকানো নির্ভর করে (বা জাভাস্ক্রিপ্ট অক্ষম থাকলে, সার্ভার পার্শ্বের বৈধতা)। এই ক্ষেত্রে ব্যবহারকারীকে একটি ত্রুটি বার্তা দ্বারা সীমাবদ্ধতার বিষয়ে অবহিত করা যেতে পারে।