এএসপি.নেট এমভিসি: @ সেকশনটির উদ্দেশ্য কী? [বন্ধ]


132

একটি এএসপি.এনইটি এমভিসি অ্যাপ্লিকেশনের জন্য, আমি এই ব্লগ নিবন্ধটি দেখেছি । লেখক স্কটগু সূচকটি যোগ @sectionকরে।

আমার কয়েকটি প্রশ্ন আছে (উপরের নিবন্ধটি উল্লেখ করে):

  • ইন্ডেক্স.কোশটিএমএল একটি ভাগ করা ভিউ?
  • উদাহরণ কোডটি @sectionএকটি নির্দিষ্ট দৃষ্টিতে কোড ব্যবহার করে। কেন?

কেউ দয়া করে ব্যাখ্যা করতে পারবেন কেন এবং কখন আমি @sectionএকটি দৃশ্যে ব্যবহার করব ?


4
এই টিউটোরিয়ালটি একবার দেখুন: weblogs.asp.net/scottgu/archive/2010/12/30/…
অ্যাড্রিয়ানো রেপিটি

1
যদিও যুক্তি দেওয়া যেতে পারে যে আরও ভাল বন্ধ হওয়ার কারণটি আজ "প্রাথমিকভাবে মতামত ভিত্তিক" হবে তবে এটি এখনও বন্ধ থাকবে। বিভাগগুলি ব্যবহারের কোনও নির্দিষ্ট উপায় নেই।
রিচার্ড

2
কিছু ব্যবহার করার জন্য কোনও নির্দিষ্ট উপায় নেই। লোকেরা কীভাবে ইন্টারনেট ব্যবহার করে তা দেখুন ...
কেজি

উত্তর:


138

@sectionকোনও সামগ্রীর সংজ্ঞায়িত করার জন্য কোনও ভাগ করা ভিউ থেকে ওভাররাইড করা হয়। মূলত, এটি আপনার ভাগ করা ভিউ (ওয়েব ফর্মগুলিতে একটি মাস্টার পৃষ্ঠার অনুরূপ) সামঞ্জস্য করার এক উপায়।

আপনি এই খুব আকর্ষণীয় উপর স্কট গু এর লেখা খুঁজে পেতে পারেন ।

সম্পাদনা: অতিরিক্ত প্রশ্নের স্পষ্টতার ভিত্তিতে

@RenderSectionসিনট্যাক্স ভাগ ভিউ, যেমন মধ্যে যায়:

<div id="sidebar">
    @RenderSection("Sidebar", required: false)
</div>

এটি আপনার @Sectionবাক্সে সিনট্যাক্স সহ স্থাপন করা হবে :

@section Sidebar{
    <!-- Content Here -->
}

এমভিসি 3 + এ আপনি সরাসরি দেখার জন্য ব্যবহৃত লেআউট ফাইলটি সংজ্ঞায়িত করতে পারেন বা সমস্ত দর্শনগুলির জন্য আপনার ডিফল্ট দৃশ্য থাকতে পারে।

সাধারণ দর্শন সেটিংস _ ভিউস্টার্ট.কোশটিএমএলে সেট করা যেতে পারে যা এর অনুরূপ ডিফল্ট লেআউট ভিউটিকে সংজ্ঞায়িত করে:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

আপনি এই স্নিপেটে প্রদর্শিত যেমন সরাসরি সূচক। Cshtml সরাসরি ফাইলে ব্যবহার করতে ভাগ করে নেওয়া ভিউ সেট করতে পারেন।

@{
    ViewBag.Title = "Corporate Homepage";
    ViewBag.BodyID = "page-home";
    Layout = "~/Views/Shared/_Layout2.cshtml";
}

এই এসও উত্তরে বর্ণিত আরও কয়েকটি দিয়ে আপনি এই সেটিংটি সামঞ্জস্য করতে পারেন এমন বিভিন্ন উপায় রয়েছে ।


ধন্যবাদ ফ্রেজেল! আমি এই টিউটোরিয়ালের রেফারেন্সে আমার প্রশ্নের সাথে আরও যুক্ত করেছি। আপনি আরও ব্যাখ্যা করতে পারেন? আবার ধন্যবাদ!
এ বোগাস

আরে @ অ্যাবোগাস আমি উত্তর আপডেট করেছি। আশা করি এই অতিরিক্ত তথ্য সহায়ক হবে :)
ফ্রেজেল থমাস

21

একটি ভাল উদাহরণ জাভাস্ক্রিপ্ট। আপনি এটি ব্রাউজারে যে পৃষ্ঠার রেন্ডার করা হয়েছে এটি নীচের অংশে থাকতে চান কারণ এটি সেরা অনুশীলন।

আপনি কেবলমাত্র পৃষ্ঠার মাঝখানে অ্যাক্সেস করতে পারবেন এমন কোনও লেআউট / মাস্টারপেজ ভিত্তিক কোনও ভিউ থেকে কীভাবে আপনি এটি করবেন?

আপনি লেআউট পৃষ্ঠার নীচে একটি স্ক্রিপ্ট বিভাগ ঘোষণা করে এটি করেন। তারপরে আপনি সামগ্রী যুক্ত করতে পারেন, এই ক্ষেত্রে জাভাস্ক্রিপ্ট অন্তর্ভুক্ত রয়েছে (আশা করি!) আপনার ভিউ পৃষ্ঠা থেকে আপনার বিন্যাস পৃষ্ঠার নীচে পর্যন্ত to


4

যখন আপনি কোনও লেআউট পৃষ্ঠায় সংজ্ঞায়িত করা হয়েছে এমন একটি স্থানধারককে রেন্ডার করার জন্য কিছু কোড / সামগ্রী চান তখন আপনি বিভাগগুলি ব্যবহার করতে চান।

আপনি যে নির্দিষ্ট উদাহরণটি সংযুক্ত করেছেন তাতে তিনি _Layout.cshtml এ রেন্ডার সেকশনটি সংজ্ঞায়িত করেছেন। যে লেআউটটি ব্যবহার করে যে কোনও ভিউ লেআউটে সংজ্ঞায়িত একই নামের একটি @ সেকশনকে সংজ্ঞায়িত করতে পারে এবং এটি লেআউটে রেন্ডারসেকশন কলকে প্রতিস্থাপন করবে।

সম্ভবত আপনি ভাবছেন যে আমরা কীভাবে জানি ইন্ডেক্স.এসএইচটিএমএল সেই লেআউটটি ব্যবহার করে? এটি কিছুটা এমভিসি / রেজার কনভেনশনের কারণে is যদি আপনি সেই কথোপকথনটি দেখেন যেখানে তিনি দর্শন যোগ করছেন, "বাক্য লেআউট বা মাস্টার পৃষ্ঠা ব্যবহার করুন" বাক্সটি চেক করা হয়েছে, এবং এর ঠিক নীচে এটিতে "এটি একটি রেজার _ভিউস্টার্ট ফাইলে সেট করা থাকলে খালি ছেড়ে দিন" বলে লেখা আছে। এটি প্রদর্শিত হয় না, তবে এর মধ্যে _ ভিউস্টার্ট.কোশটিএমএল ফাইলটি কোডের মতো:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

ভিউস্টার্টগুলি যেভাবে কাজ করে তা হ'ল একই ডিরেক্টরি বা শিশু ডিরেক্টরিগুলির মধ্যে যে কোনও সিএসটিএমএল ফাইল ভিউ স্টার্ট নিজে চালানোর আগে চালিত করবে।

আমাদের সূচী। সিএসটিএমএল ভাগ করে নেওয়া / _লয়আউটসিএইচটিএমএল ব্যবহার করে বলে uses


_ভিউস্টার্টটির দুর্দান্ত ব্যাখ্যা।
15 ʙᴀᴋᴇʀ

3

এটি আপনাকে @Sectionআপনার টেমপ্লেটে এমন কোনও কোডের সংজ্ঞা দিতে দেয় যা আপনি অন্য ফাইলগুলিতে অন্তর্ভুক্ত করতে পারেন। উদাহরণস্বরূপ, টেমপ্লেটে সংজ্ঞায়িত একটি সাইডবারটি অন্য অন্তর্ভুক্ত দৃশ্যে রেফারেন্স করা যেতে পারে।

//This could be used to render a @Section defined as @Section SideBar { ...
@RenderSection("SideBar", required: false);

আশাকরি এটা সাহায্য করবে.

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