প্রদর্শন বৈশিষ্ট্য বনাম প্রদর্শন বৈশিষ্ট্য


উত্তর:


69

তারা উভয় আপনি একই ফলাফল দিতে কিন্তু কী পার্থক্য আমি দেখছি যে আপনি একটি নির্দিষ্ট করতে পারেন না হয় ResourceTypeমধ্যে DisplayNameঅ্যাট্রিবিউট। এমভিসি ২-তে উদাহরণ হিসাবে, আপনাকে DisplayNameস্থানীয়করণের মাধ্যমে সংস্থান সরবরাহ করতে অ্যাট্রিবিউটটি সাবক্লাস করতে হয়েছিল । Displayঅ্যাট্রিবিউট (এমভিসি 3 এবং .NET4 এ নতুন) ResourceType"বাক্সের বাইরে" সম্পত্তি হিসাবে ওভারলোডকে সমর্থন করে ।


1
জানা ভাল! .Resx ফাইল থেকে ডিসপ্লে মান লোড করার জন্য একটি কাস্টম অ্যাট্রিবিউট বাস্তবায়ন করতে চলেছিল, তখন এই প্রশ্নটিতে ঘটেছে। স্থানীয়করণযুক্ত অ্যাপ্লিকেশনগুলি বিকাশ করার সময় প্রদর্শন বৈশিষ্ট্যটি যাওয়ার উপায়।
কার্ল হেনরিচ হ্যাঙ্কে

148

DisplayNameDisplayNameমডেল মেটাটাটা সেট করে । উদাহরণ স্বরূপ:

[DisplayName("foo")]
public string MyProperty { get; set; }

এবং আপনি যদি আপনার দৃষ্টিতে নিম্নলিখিত ব্যবহার করেন:

@Html.LabelFor(x => x.MyProperty)

এটি উত্পন্ন হবে:

<label for="MyProperty">foo</label>

Display একই কাজ করে, তবে আপনাকে অন্যান্য মেটাডেটা বৈশিষ্ট্য যেমন নাম, বিবরণ, ...

ব্র্যাড উইলসনের একটি দুর্দান্ত ব্লগ পোস্ট রয়েছে যা এই বৈশিষ্ট্যগুলিকে আচ্ছাদন করে।


1
+1 - সম্ভবত আমার চেয়ে অনেক বেশি সহায়ক (এখন মুছে ফেলা হয়েছে); আমার জন্য খুব সকালে :)
আন্দ্রেস জোল্টান

প্রোপার্টিডিজিপ্টর এবং ডিসপ্লে (নাম .. কল করার সময় নাম ডেস্ক্রিপ্টর.ডিসপ্লিনাম) ব্যবহার করে আমার সমস্যা হয়েছে, এটি কেবল প্রদর্শন নাম ব্যবহার করে কাজ করবে, প্রদর্শন (নাম ..) নয়
eaglei22

24

আমি মনে করি যে বর্তমান উত্তরগুলি প্রকৃত গুরুত্বপূর্ণ এবং তাৎপর্যপূর্ণ পার্থক্যগুলি এবং এটি ব্যবহারের জন্য কী বোঝায় তা হাইলাইট করতে অবহেলা করছে। যদিও তারা উভয়ই কিছু নির্দিষ্ট পরিস্থিতিতে কাজ করতে পারে কারণ উভয়টির সমর্থনে প্রবর্তক নির্মিত, তাদের ব্যবহারের পরিস্থিতি আলাদা। উভয়ই বৈশিষ্ট্য এবং পদ্ধতিগুলি বর্নিত করতে পারে তবে এখানে কয়েকটি গুরুত্বপূর্ণ পার্থক্য রয়েছে:

DisplayAttribute

  • সংজ্ঞায়িত System.ComponentModel.DataAnnotationsমধ্যে নামস্থান System.ComponentModel.DataAnnotations.dllসমাবেশ
  • পরামিতি এবং ক্ষেত্র ব্যবহার করা যেতে পারে
  • আপনাকে অতিরিক্ত বৈশিষ্ট্যগুলি যেমন Descriptionবা হিসাবে সেট করতে দেয়ShortName
  • সংস্থান সঙ্গে স্থানীয়করণ করা যেতে পারে

DisplayNameAttribute

  • ডিসপ্লেনামটি System.ComponentModelনামস্থানে রয়েছেSystem.dll
  • ক্লাস এবং ইভেন্টগুলিতে ব্যবহার করা যেতে পারে
  • সংস্থান সঙ্গে স্থানীয়করণ করা যায় না

অ্যাসেম্বলি এবং নেমস্পেস হ'ল উদ্দেশ্যটি ব্যবহার করে এবং স্থানীয়করণের সমর্থনটি হ'ল বড় কিকার। DisplayNameAttribute.NET 2 সাল থেকে প্রায় হয়েছে এবং মনে হয় যে উত্তরাধিকার সম্পত্তি গ্রিডে বিকাশকারী উপাদান এবং বৈশিষ্ট্যগুলির নামকরণের জন্য আরও উদ্দেশ্য করা হয়েছিল, শেষের ব্যবহারকারীদের কাছে দৃশ্যমান জিনিসগুলির জন্য স্থানীয়করণ এবং এ জাতীয় প্রয়োজন হতে পারে তেমন কিছু নয়।

DisplayAttributeপরে। নেট 4 এ প্রবর্তিত হয়েছিল এবং মনে হয় বিশেষভাবে ডেটা ক্লাসের সদস্যদের লেবেলিংয়ের জন্য ডিজাইন করা হয়েছে যা শেষ-ব্যবহারকারীর দ্বারা দৃশ্যমান হবে, সুতরাং এটি ডিটিও, সত্তা এবং এই ধরণের অন্যান্য জিনিসের জন্য আরও উপযুক্ত। আমি এটি বরং দুর্ভাগ্যজনক বলে মনে করি যে তারা এটিকে সীমাবদ্ধ করেছে যাতে এটি ক্লাসে ব্যবহার করা যায় না।

সম্পাদনা: দেখে মনে হচ্ছে সর্বশেষ .NET কোর উত্স DisplayAttributeএখন ক্লাসেও ব্যবহার করার অনুমতি দেয় ।


13

সম্ভবত এটি। নেট কোরের সাথে সুনির্দিষ্ট, আমি দেখতে পেলাম যে ডিসপ্লেনামটি কাজ করবে না তবে প্রদর্শন (নাম = ...) করবে না। এটি সমস্যা সমাধানের সাথে জড়িত অন্য কাউকে বাঁচাতে পারে :)

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