এএসপি.নেট এমভিসি-তে DisplayNameগুণাবলী এবং Displayবৈশিষ্ট্যের মধ্যে পার্থক্য কী ?
এএসপি.নেট এমভিসি-তে DisplayNameগুণাবলী এবং Displayবৈশিষ্ট্যের মধ্যে পার্থক্য কী ?
উত্তর:
তারা উভয় আপনি একই ফলাফল দিতে কিন্তু কী পার্থক্য আমি দেখছি যে আপনি একটি নির্দিষ্ট করতে পারেন না হয় ResourceTypeমধ্যে DisplayNameঅ্যাট্রিবিউট। এমভিসি ২-তে উদাহরণ হিসাবে, আপনাকে DisplayNameস্থানীয়করণের মাধ্যমে সংস্থান সরবরাহ করতে অ্যাট্রিবিউটটি সাবক্লাস করতে হয়েছিল । Displayঅ্যাট্রিবিউট (এমভিসি 3 এবং .NET4 এ নতুন) ResourceType"বাক্সের বাইরে" সম্পত্তি হিসাবে ওভারলোডকে সমর্থন করে ।
DisplayNameDisplayNameমডেল মেটাটাটা সেট করে । উদাহরণ স্বরূপ:
[DisplayName("foo")]
public string MyProperty { get; set; }
এবং আপনি যদি আপনার দৃষ্টিতে নিম্নলিখিত ব্যবহার করেন:
@Html.LabelFor(x => x.MyProperty)
এটি উত্পন্ন হবে:
<label for="MyProperty">foo</label>
Display একই কাজ করে, তবে আপনাকে অন্যান্য মেটাডেটা বৈশিষ্ট্য যেমন নাম, বিবরণ, ...
ব্র্যাড উইলসনের একটি দুর্দান্ত ব্লগ পোস্ট রয়েছে যা এই বৈশিষ্ট্যগুলিকে আচ্ছাদন করে।
আমি মনে করি যে বর্তমান উত্তরগুলি প্রকৃত গুরুত্বপূর্ণ এবং তাৎপর্যপূর্ণ পার্থক্যগুলি এবং এটি ব্যবহারের জন্য কী বোঝায় তা হাইলাইট করতে অবহেলা করছে। যদিও তারা উভয়ই কিছু নির্দিষ্ট পরিস্থিতিতে কাজ করতে পারে কারণ উভয়টির সমর্থনে প্রবর্তক নির্মিত, তাদের ব্যবহারের পরিস্থিতি আলাদা। উভয়ই বৈশিষ্ট্য এবং পদ্ধতিগুলি বর্নিত করতে পারে তবে এখানে কয়েকটি গুরুত্বপূর্ণ পার্থক্য রয়েছে:
DisplayAttribute
System.ComponentModel.DataAnnotationsমধ্যে নামস্থান System.ComponentModel.DataAnnotations.dllসমাবেশDescriptionবা হিসাবে সেট করতে দেয়ShortNameDisplayNameAttribute
System.ComponentModelনামস্থানে রয়েছেSystem.dllঅ্যাসেম্বলি এবং নেমস্পেস হ'ল উদ্দেশ্যটি ব্যবহার করে এবং স্থানীয়করণের সমর্থনটি হ'ল বড় কিকার। DisplayNameAttribute.NET 2 সাল থেকে প্রায় হয়েছে এবং মনে হয় যে উত্তরাধিকার সম্পত্তি গ্রিডে বিকাশকারী উপাদান এবং বৈশিষ্ট্যগুলির নামকরণের জন্য আরও উদ্দেশ্য করা হয়েছিল, শেষের ব্যবহারকারীদের কাছে দৃশ্যমান জিনিসগুলির জন্য স্থানীয়করণ এবং এ জাতীয় প্রয়োজন হতে পারে তেমন কিছু নয়।
DisplayAttributeপরে। নেট 4 এ প্রবর্তিত হয়েছিল এবং মনে হয় বিশেষভাবে ডেটা ক্লাসের সদস্যদের লেবেলিংয়ের জন্য ডিজাইন করা হয়েছে যা শেষ-ব্যবহারকারীর দ্বারা দৃশ্যমান হবে, সুতরাং এটি ডিটিও, সত্তা এবং এই ধরণের অন্যান্য জিনিসের জন্য আরও উপযুক্ত। আমি এটি বরং দুর্ভাগ্যজনক বলে মনে করি যে তারা এটিকে সীমাবদ্ধ করেছে যাতে এটি ক্লাসে ব্যবহার করা যায় না।
সম্পাদনা: দেখে মনে হচ্ছে সর্বশেষ .NET কোর উত্স DisplayAttributeএখন ক্লাসেও ব্যবহার করার অনুমতি দেয় ।
সম্ভবত এটি। নেট কোরের সাথে সুনির্দিষ্ট, আমি দেখতে পেলাম যে ডিসপ্লেনামটি কাজ করবে না তবে প্রদর্শন (নাম = ...) করবে না। এটি সমস্যা সমাধানের সাথে জড়িত অন্য কাউকে বাঁচাতে পারে :)
//using statements
using System;
using System.ComponentModel.DataAnnotations; //needed for Display annotation
using System.ComponentModel; //needed for DisplayName annotation
public class Whatever
{
//Property
[Display(Name ="Release Date")]
public DateTime ReleaseDate { get; set; }
}
//cshtml file
@Html.DisplayNameFor(model => model.ReleaseDate)