@ এইচটিএমএল.ডিসপ্লে ফর্ম সিনট্যাক্স কী?


223

আমি বুঝতে পেরেছি যে রেজারে, @ এইচটিএমএল লিঙ্ক, ইনপুটস ইত্যাদির জন্য এইচটিএমএল উত্সাহিত করার মতো বেশ কয়েকটি ঝরঝরে পরিষ্কার কাজ করে things

তবে আমি ডিসপ্লেফোর্ড ফাংশনটি পাই না ...

আমি কেন লিখব:

@Html.DisplayFor(model => model.Title)

যখন আমি কেবল লিখতে পারি:

@Model.Title

উত্তর:


217

Html.DisplayFor() সম্পত্তির ধরণের সাথে মেলে এমন ডিসপ্লেটিম্পলেট রেন্ডার করবে।

যদি এটি কোনও সন্ধান না করে তবে আমি মনে করি এটি অনুরোধ করে .ToString()


আপনি যদি ডিসপ্লে টেমপ্লেটগুলি সম্পর্কে জানেন না, তবে তারা আংশিক দর্শন যা DisplayTemplatesকোনও নিয়ামকের সাথে সম্পর্কিত ভিউ ফোল্ডারের ভিতরে কোনও ফোল্ডারে রাখা যেতে পারে ।


উদাহরণ:

যদি আপনি নীচের কোডটি দিয়ে আপনার ভিউ ফোল্ডারের ফোল্ডারের (যেমন , বা ) ফোল্ডারের String.cshtmlভিতরে একটি ভিউ তৈরি করেন :DisplayTemplatesHomeShared

@model string

@if (string.IsNullOrEmpty(Model)) {
   <strong>Null string</strong>
}
else {
   @Model
}

তারপরে @Html.DisplayFor(model => model.Title)(ধরে নেওয়া যে Titleএটি একটি স্ট্রিং) টেমপ্লেটটি ব্যবহার করবে এবং <strong>Null string</strong>স্ট্রিংটি শূন্য, বা খালি থাকলে প্রদর্শন করবে।


6
আদিম ধরণের জন্য ডিসপ্লেফোর্ড ব্যবহার করা বেশিরভাগ ক্ষেত্রে আমার কাছে অর্থহীন বলে মনে হয়। উদাহরণস্বরূপ, ডেটটাইম সময় অংশটি অকেজো থাকলেও তারিখ / সময় প্রদর্শন করবে। আপনি যদি মডেলের বৈশিষ্ট্যগুলির বৈশিষ্ট্যগুলিতে একটি ডেটটাইম টাইপের জন্য "{0: d}" বিন্যাসের স্ট্রিং নির্দিষ্ট করতে পারেন তবে ডিসপ্লেফোর্ড সম্ভবত আরও কার্যকর হতে পারে।
enorl76

6
@ enorl76 আপনি পারেন। দেখুন Daveo এর উত্তর
বারট্রান্ড মেররন

3
উদাহরণস্বরূপ ফর্মগুলিতে সর্বদা একটি তারিখ চয়নকারী দেখানোর জন্য আপনি ডেটটাইম ডেটাটাইপের জন্য এডিটরফোর্ড টেম্পলেটে একটি jQuery তারিখ চয়নকারী যুক্ত করতে পারেন।
জাচারি স্কট

4
এটি সাধারণভাবে এটি ব্যবহার করা ওভার ইঞ্জিনিয়ারিংয়ের মতো বলে মনে হয় তবে আপনি যখন নির্দিষ্ট মডেল বৈশিষ্ট্যের জন্য আউটপুট ফর্ম্যাট করতে চান তখন আপনার এটি ব্যবহার করা উচিত। সহায়ক প্রশ্ন এবং উত্তর বলছি, ধন্যবাদ। চারদিকে +1
রবিন উইনস্লো

আপনার যদি একই নামে দুটি মডেল থাকে তবে কী হবে?
হলিভিংস্টন

77

আমি মনে করি মূল উপকারটি তখন হবে যখন আপনি নিজের ডিসপ্লে টেমপ্লেটগুলি সংজ্ঞায়িত করবেন বা ডেটা টীকাগুলি ব্যবহার করবেন।

সুতরাং উদাহরণস্বরূপ যদি আপনার শিরোনাম একটি তারিখ ছিল, আপনি সংজ্ঞায়িত করতে পারে

[DisplayFormat(DataFormatString = "{0:d}")]

এবং তারপরে প্রতিটি পৃষ্ঠায় এটি একটি সামঞ্জস্যপূর্ণ পদ্ধতিতে মানটি প্রদর্শন করবে। অন্যথায় আপনাকে একাধিক পৃষ্ঠায় প্রদর্শনটি কাস্টমাইজ করতে হতে পারে। সুতরাং এটি সরল স্ট্রিংগুলির পক্ষে খুব বেশি সহায়তা করে না তবে মুদ্রা, তারিখ, ইমেল, ইউআরএল ইত্যাদির জন্য এটি সহায়তা করে

উদাহরণস্বরূপ কোনও ইমেল ঠিকানাটি সরল স্ট্রিংয়ের পরিবর্তে এটি কোনও লিঙ্ক হিসাবে প্রদর্শিত হতে পারে:

<a href="mailto:@ViewData.Model">@ViewData.TemplateInfo.FormattedModelValue</a>

28

DisplayForটেম্পলেট করার জন্যও কার্যকর। আপনি আপনার মডেলের জন্য একটি টেম্পলেট লিখতে পারেন এবং এর মতো কিছু করতে পারেন:

@Html.DisplayFor(m => m)

অনুরূপ @Html.EditorFor(m => m)। এটি ডিআরওয়াই অধ্যক্ষের জন্য দরকারী যাতে একই মডেলের জন্য আপনাকে একই প্রদর্শন যুক্তিটি বারবার লিখতে না পারে।

এমভিসি 2 টেম্পলেটগুলিতে এই ব্লগটি একবার দেখুন। এটি এখনও এমভিসি 3 তে খুব প্রযোজ্য:

http://www.dalsoft.co.uk/blog/index.php/2010/04/26/mvc-2-templates/


আপনার মডেলটিতে ডেটা টিকা থাকলে তাও কার্যকর। উদাহরণস্বরূপ, যদি মডেলটির সম্পত্তি EmailAddressডেটা টীকাতে সজ্জিত হয় তবে DisplayForএটি একটি mailto:লিঙ্ক হিসাবে রেন্ডার করবে ।


8
@Html.DisplayFor(m => m)এছাড়াও সরল করা যেতে পারে @Html.DisplayForModel()
ব্র্যান্ট ববি

লামদা এক্সপ্রেশন (এম => মি) কী? প্রথম মি প্রতিনিধিত্ব কি?
আর্কডিয়ান

1
প্রথম মিটার প্যারামিটারটির নাম
সিনাইস্টেটিক

1
@ ম্যাজিক- c0d3r প্রথম মি হ'ল পৃষ্ঠার মডেল অবজেক্ট। ল্যাবমডা এক্সপ্রেশনটিতে এটিই ব্যবহার করা হয়েছে
ডন

4

কিছু সময়ের জন্য নিজের জন্য উত্তর খোঁজার পরে আমি কিছু খুঁজে পেতে পারি। সাধারণভাবে আমরা যদি এটি কেবলমাত্র একটি সম্পত্তির জন্য ব্যবহার করি তবে এটি উত্পন্ন হয় এমনকি যদি আমরা নীচে উত্পন্ন এইচটিএমএলটির "উত্স দেখুন" তৈরি করি, উদাহরণস্বরূপ, যখন আমি আমার শ্রেণীর জন্য কেবল নাম সম্পত্তি প্রদর্শন করতে চাই

    <td>
    myClassNameProperty
    </td>
   <td>
    myClassNameProperty, This is direct from Item
    </td>

এটি নীচের কোড থেকে উত্পন্ন এইচটিএমএল

<td>
@Html.DisplayFor(modelItem=>item.Genre.Name)            
</td>

<td>
@item.Genre.Name, This is direct from Item
</td>

একই সময়ে এখন যদি আমি এই ক্ষেত্রে আমার শ্রেণীর "জেনার" এর জন্য একটি বিবৃতিতে সমস্ত সম্পত্তি প্রদর্শন করতে চাই তবে আমি @ এইচটিএমএল ব্যবহার করতে পারি least

জেনারের প্রতিটি সম্পত্তির জন্য আলাদাভাবে বিবৃতি লেখার জায়গায় আমি নীচে @ এইচটিএমএল.ডিসপ্লেফোর্ড (মডেল আইটেম => আইটেম.জেনার) লিখতে পারি

@item.Genre.Name
@item.Genre.Id
@item.Genre.Description

এবং তাই বৈশিষ্ট্যের সংখ্যার উপর নির্ভর করে।

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