স্ট্রিংলেংথ বনাম ম্যাক্সেলংথ এএসপি.নেট এমভিসিকে সত্ত্বা ফ্রেমওয়ার্ক ইএফ কোডের প্রথম বৈশিষ্ট্যযুক্ত


152

আচরণ [MaxLength][StringLength]গুণাবলীর মধ্যে পার্থক্য কী ?

আমি যতদূর বলতে পারি ( [MaxLength]একটি অ্যারের সর্বাধিক দৈর্ঘ্যকে বৈধতা দিতে পারে এমন ব্যতিক্রম সহ ) এগুলি কি অভিন্ন এবং কিছুটা অপ্রয়োজনীয়?


1
আমি নিশ্চিত ASP.NET MVC সম্পর্কে নই কিন্তু মতিন জন্য কোনো পার্থক্য হওয়া উচিত: stackoverflow.com/questions/5414611/...
Ladislav Mrnka

1
আপনি যখন এটি পরিবর্তন করেন তখন স্ট্রিংলংথ মাইগ্রেশন কলের আকারকে প্রভাবিত করে না।
ক্যাস ব্লিম

@CasBloem StringLength আসলে EntityFramework দ্বারা কুড়ান পেতে পারে এবং কলাম লেন্থ প্রভাব ফেলবে - অন্তত মধ্যে সংস্করণ 6.
jakejgordon

উত্তর:


203

সারণী মান ক্ষেত্রটি যখন ডেটাবেস তৈরি করে তখন কত বড় করা যায় তা নির্ধারণ করার জন্য সত্তা ফ্রেমওয়ার্কের জন্য ম্যাক্স লেংথ ব্যবহার করা হয়।

এমএসডিএন থেকে:

কোনও সম্পত্তিতে অনুমোদিত অ্যারে বা স্ট্রিং ডেটার সর্বাধিক দৈর্ঘ্য নির্দিষ্ট করে।

স্ট্রিংলেংথ এমন একটি ডেটা টিকা যা ব্যবহারকারীর ইনপুটকে বৈধতার জন্য ব্যবহার করা হবে।

এমএসডিএন থেকে:

ডেটা ক্ষেত্রে অনুমোদিত মাপের অক্ষরের সর্বনিম্ন এবং সর্বাধিক দৈর্ঘ্য নির্দিষ্ট করে।


10
এছাড়াও লক্ষ করুন যে ডিফল্টরূপে এমভিসি 3 স্বীকৃত নয় MaxLengthAttribute, যখন ইএফ স্বীকৃতি দেয়StringLengthAttribute
মার্চাইন্ড

15
সুতরাং সত্যিই ম্যাক্সলেংথের কোনও প্রয়োজন নেই যেহেতু আপনি ইএফ-তে স্ট্রিংলেংথ ব্যবহার করতে পারেন এবং এটি স্ট্রিং ফিল্ডের আকারকেও হ্রাস করে। তাহলে কেন তারা ম্যাক্সলেংথ তৈরি করেছিল?
ম্যাট জনসন-পিন্ট

4
@ ম্যাটজহানসন - আমি মনে করি মনে হচ্ছে যে নতুন ম্যাক্সলেংথ অ্যাট্রিবিউট তৈরির সিদ্ধান্তটি শব্দার্থবিজ্ঞানের জন্য ছিল কারণ স্ট্রিংলেংথ স্ট্রিং ডেটার বোঝায় তবে ম্যাক্সেল্থথ বাইনারি ডেটাতেও প্রয়োগ করতে পারে। তবে এটি নিশ্চিত যে জাহান্নাম অসুবিধাজনক।
জোশ

1
@ মার্টিনস্মিত - আমি কেবল স্ট্রিংলংথ ব্যবহার করার চেষ্টা করেছি এবং এটি আমার পক্ষে কাজ করেছে এবং আমি EF6 আরসি 1 ব্যবহার করছি যাতে আমি মন্তব্যগুলি সঠিক বলে মনে করি না
কলিন

5
[MaxLength]তবুও কেন ত্রুটিযুক্তি আছে?
Zapnologica

46

কিছু তাত্পর্যপূর্ণ কিন্তু অত্যন্ত দরকারী অতিরিক্ত তথ্য যা আমি সবেমাত্র অন্য একটি পোস্ট থেকে শিখেছি, তবে এর জন্য ডকুমেন্টেশনগুলি খুঁজে পেতে পারে না (যদি কেউ এমএসডিএন এর সাথে একটি লিঙ্ক ভাগ করতে পারে তবে এটি আশ্চর্যজনক হবে):

এই বৈশিষ্ট্যগুলির সাথে যুক্ত বৈধতা বার্তাগুলি প্রকৃতপক্ষে বৈশিষ্ট্যের সাথে যুক্ত স্থানধারীদের প্রতিস্থাপন করবে। উদাহরণ স্বরূপ:

[MaxLength(100, "{0} can have a max of {1} characters")]
public string Address { get; set; }

অক্ষরের সীমা ছাড়িয়ে গেলে নিম্নলিখিতগুলি আউটপুট দেবে: "ঠিকানায় সর্বোচ্চ 100 টি অক্ষর থাকতে পারে"

আমি যে জায়গাগুলি সম্পর্কে সচেতন তা হ'ল:

  • {0} = সম্পত্তির নাম
  • {1} = সর্বোচ্চ দৈর্ঘ্য
  • {2} = ন্যূনতম দৈর্ঘ্য

প্রাথমিকভাবে এটি নির্দেশ করার জন্য ব্লাউড্রাককে অনেক ধন্যবাদ ।


12

যখন আমরা উভয় [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; }
 }

7

সমস্ত ভাল উত্তর ... বৈধতার দৃষ্টিকোণ থেকে, আমি আরও লক্ষ্য করেছি যে ম্যাক্সেলংথ কেবলমাত্র সার্ভারের পাশেই বৈধ হয়ে গেছে, যখন স্ট্রিংলেংথ ক্লায়েন্টের পক্ষেও বৈধ হয়ে গেছে।


4

ম্যাক্সলেংথ্যাট্রিবিউট মানে সর্বোচ্চ। অ্যারের দৈর্ঘ্য বা স্ট্রিং ডেটা অনুমোদিত

স্ট্রিংলেংথ্যাট্রিবিউট মানে ন্যূনতম। এবং সর্বাধিক ডেটা ক্ষেত্রে অনুমোদিত অক্ষরের দৈর্ঘ্য

পরিদর্শন http://joeylicc.wordpress.com/2013/06/20/asp-net-mvc-model-validation-using-data-annotations/


3

আরেকটি বিষয় লক্ষ্যনীয় যে ম্যাক্সেলংথ অ্যাট্রিবিউটে আপনি কেবলমাত্র সর্বাধিক প্রয়োজনীয় ব্যাপ্তি সরবরাহ করতে পারবেন কোনও ন্যূনতম প্রয়োজনীয় ব্যাপ্তি নয়। যদিও StringLength আপনি প্রদান করতে পারেন উভয়


4
হ্যাঁ, কিন্তু এই সম্ভবতঃ কেন সেখানে একটি দয়া করে MINLENGTH অ্যাট্রিবিউট আছে: msdn.microsoft.com/EN-US/library/gg696756(v=VS.110,d=hv.2).aspx
ইয়ান গ্রিফিথস

1

আমি আমার প্রসঙ্গে নীচে লাইন যুক্ত করে এটি সমাধান করেছি:

modelBuilder.Entity<YourObject>().Property(e => e.YourColumn).HasMaxLength(4000);

একরকম, [MaxLength]আমার জন্য কাজ করে না।


0

কোনও ওয়েবপৃষ্ঠায় কোনও ফর্ম থেকে পাঠ্যের জন্য সর্বাধিক ইনপুট দৈর্ঘ্যকে সীমাবদ্ধ করতে অ্যাট্রিবিউটটি ব্যবহার করার সময়, স্ট্রিংলেংথটি সর্বোচ্চ দৈর্ঘ্যের এইচটিএমএল বৈশিষ্ট্যটি তৈরি করেছে বলে মনে হয় (কমপক্ষে এমভিসি 5 দিয়ে আমার পরীক্ষায়)। তারপরে যেটি বেছে নেবে তা নির্ভর করে আপনি কীভাবে ব্যবহারকারীকে সতর্ক করতে চান যে এটি সর্বাধিক পাঠ্য দৈর্ঘ্য। স্ট্রিংলেথ অ্যাট্রিবিউট দিয়ে, ব্যবহারকারী কেবল অনুমোদিত দৈর্ঘ্যের বাইরে টাইপ করতে সক্ষম হবে না। সর্বাধিক দৈর্ঘ্যের বৈশিষ্ট্য এই এইচটিএমএল বৈশিষ্ট্যটিকে যুক্ত করে না, পরিবর্তে এটি ডেটা বৈধতা বিশিষ্টতা উত্পন্ন করে, এর অর্থ ব্যবহারকারী ব্যবহারকারী নির্দেশিত দৈর্ঘ্যের বাইরেও টাইপ করতে পারে এবং যে যখন পরবর্তী ক্ষেত্রটিতে চলে আসে বা ক্লিকগুলি জমা দেয় তখন জাভাস্ক্রিপ্টে বৈধতার উপর দীর্ঘতর ইনপুট আটকানো নির্ভর করে (বা জাভাস্ক্রিপ্ট অক্ষম থাকলে, সার্ভার পার্শ্বের বৈধতা)। এই ক্ষেত্রে ব্যবহারকারীকে একটি ত্রুটি বার্তা দ্বারা সীমাবদ্ধতার বিষয়ে অবহিত করা যেতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.