$lang['tuto'] = "টিউটোরিয়াল"; ?> গতিশীলভাবে DevExpress

গতিশীলভাবে DevExpress ট্যাবপ্যানেলে কাস্টম টেমপ্লেট যুক্ত করতে ASP.NET কোরে জাভাস্ক্রিপ্ট কীভাবে ব্যবহার করবেন

Temp mail SuperHeros
গতিশীলভাবে DevExpress ট্যাবপ্যানেলে কাস্টম টেমপ্লেট যুক্ত করতে ASP.NET কোরে জাভাস্ক্রিপ্ট কীভাবে ব্যবহার করবেন
গতিশীলভাবে DevExpress ট্যাবপ্যানেলে কাস্টম টেমপ্লেট যুক্ত করতে ASP.NET কোরে জাভাস্ক্রিপ্ট কীভাবে ব্যবহার করবেন

DevExpress ট্যাবপ্যানেল টেমপ্লেটগুলিকে গতিশীলভাবে পপুলেট করতে জাভাস্ক্রিপ্ট ব্যবহার করা

সাথে কাজ করার সময় ASP.NET কোর এবং ডেভএক্সপ্রেস উপাদান, বিকাশকারীরা প্রায়শই UI উপাদানগুলির মধ্যে গতিশীলভাবে বিষয়বস্তু ইনজেক্ট করার প্রয়োজনের সম্মুখীন হয় যেমন dxTabPanel. যাইহোক, একটি সাধারণ সমস্যা দেখা দেয় যেখানে সঠিক সংখ্যক ট্যাব তৈরি করা হয়, কিন্তু ট্যাবের বিষয়বস্তু খালি থাকে, হতাশাজনক উন্নয়ন প্রচেষ্টা।

চ্যালেঞ্জটি ঘটে যখন রেজার ভিউতে সংজ্ঞায়িত টেমপ্লেটগুলি রানটাইমে ট্যাব প্যানেলের মধ্যে সঠিকভাবে লোড করতে ব্যর্থ হয়। এই নিবন্ধটি সম্বোধন কিভাবে DevExpress ট্যাবপ্যানেল টেমপ্লেটগুলি গতিশীলভাবে পূরণ করুন জাভাস্ক্রিপ্ট ব্যবহার করে। প্রতিটি ট্যাবের ভিতরে বিষয়বস্তু সঠিকভাবে প্রদর্শিত হচ্ছে তা নিশ্চিত করার জন্য আমরা একটি বাস্তব সমাধান অন্বেষণ করব।

দুটি টেমপ্লেট—`কর্মচারী তালিকা টেমপ্লেট` এবং `অ্যাডএডিট এমপ্লয়ি টেমপ্লেট`-এর সাথে একটি দৃশ্যকল্প পরীক্ষা করার মাধ্যমে আমরা ট্যাব বিষয়বস্তুর অনুপস্থিত সমস্যার সমাধান করার লক্ষ্য রাখি। আপনি শিখবেন কিভাবে টেমপ্লেট ডেটা পার্স করতে হয় এবং জাভাস্ক্রিপ্টের মাধ্যমে আপনার ট্যাবপ্যানেলে আবদ্ধ করতে হয়।

নিম্নলিখিত বিভাগগুলিতে, আমরা আপনাকে জাভাস্ক্রিপ্ট ব্যবহার করে গতিশীলভাবে টেমপ্লেট তৈরি এবং রেন্ডার করার সাথে জড়িত পদক্ষেপগুলির মধ্য দিয়ে চলে যাব। উপরন্তু, আমরা মোকাবেলা করার সময় এড়ানোর জন্য সম্ভাব্য ক্ষতিগুলি হাইলাইট করব DevExpress উপাদান আপনার মধ্যে ASP.NET কোর প্রকল্প

আদেশ ব্যবহারের উদাহরণ
.dxTabPanel("instance") এই পদ্ধতিটি ট্যাবপ্যানেল উইজেটের উদাহরণ প্রদান করে, এটির কনফিগারেশন এবং বিকল্পগুলিতে অ্যাক্সেসের অনুমতি দেয়। উইজেটের বিষয়বস্তু বা আচরণকে গতিশীলভাবে পরিবর্তন করার সময় এটি অত্যন্ত গুরুত্বপূর্ণ।
option("items", items) আইটেমগুলির একটি নতুন অ্যারের সাথে TabPanel এর আইটেম বৈশিষ্ট্য আপডেট করে। এটি ট্যাবগুলিতে গতিশীলভাবে টেমপ্লেট বা অন্যান্য বিষয়বস্তু ইনজেক্ট করতে ব্যবহৃত হয়।
NamedTemplate একটি DevExpress-নির্দিষ্ট রেজার নির্দেশিকা যা আপনাকে ব্যাকএন্ডে পুনঃব্যবহারযোগ্য টেমপ্লেটগুলিকে সংজ্ঞায়িত করতে দেয়, যা পরে জাভাস্ক্রিপ্টে গতিশীলভাবে অ্যাক্সেস করা যেতে পারে।
JSON.parse() একটি JSON স্ট্রিং পার্স করে এবং একটি জাভাস্ক্রিপ্ট অবজেক্ট রিটার্ন করে। এই ক্ষেত্রে, এটি একটি ব্যবহারযোগ্য বস্তুতে টেমপ্লেট তথ্য ধারণকারী একটি স্ট্রিং রূপান্তর করতে ব্যবহৃত হয়।
map() এই অ্যারে পদ্ধতিটি মূল অ্যারের প্রতিটি উপাদানকে রূপান্তর করে একটি নতুন অ্যারে তৈরি করে। এখানে, এটি JSON টেমপ্লেটগুলিকে TabPanel আইটেমে রূপান্তর করতে ব্যবহৃত হয়।
$(selector).html() একটি নির্বাচিত উপাদানের HTML সামগ্রী পুনরুদ্ধার বা সেট করতে jQuery কমান্ড। এটি এখানে ব্যবহার করা হয়েছে ডায়নামিকভাবে টেমপ্লেট সামগ্রী আনতে।
expect().toBe() একটি জেস্ট টেস্টিং ফাংশন যা প্রত্যাশিত মান প্রকৃত মানের সাথে মেলে কিনা তা পরীক্ষা করে। TabPanel আচরণ যাচাই করার জন্য ইউনিট পরীক্ষার জন্য এটি অপরিহার্য।
.OnClick() একটি DevExpress-নির্দিষ্ট পদ্ধতি যা একটি জাভাস্ক্রিপ্ট ফাংশনকে একটি বোতাম ক্লিক ইভেন্টে আবদ্ধ করতে ব্যবহৃত হয়। যখন বোতামটি ক্লিক করা হয় তখন এটি ট্যাব জনসংখ্যা ফাংশনকে ট্রিগার করে।
Loop(false) ট্যাবপ্যানেলে লুপিং অক্ষম করে, নিশ্চিত করে যে ট্যাবগুলি অবিরামভাবে সাইকেল করা যাবে না৷ এটি প্রায়ই উইজেটের মধ্যে ব্যবহারকারীর নেভিগেশন সীমাবদ্ধ করার জন্য প্রয়োজনীয়।
DeferRendering(false) এই কমান্ডটি নিশ্চিত করে যে সমস্ত ট্যাবের বিষয়বস্তু অবিলম্বে রেন্ডার করা হয়েছে, ট্যাব খোলা না হওয়া পর্যন্ত পিছিয়ে দেওয়া হবে না। এটি সামগ্রী লোডিং সমস্যা এড়াতে ব্যবহৃত হয়।

DevExpress এর সাথে ASP.NET কোরে ডায়নামিক ট্যাবপ্যানেল টেমপ্লেট ম্যানেজমেন্ট বোঝা

এই উদাহরণে প্রদত্ত স্ক্রিপ্টগুলির লক্ষ্য একটি গতিশীলভাবে জনবহুল করা DevExpress ট্যাবপ্যানেল একটি জাভাস্ক্রিপ্ট ব্যবহার করে ASP.NET কোর পরিবেশ চ্যালেঞ্জ দেখা দেয় যখন রেজার ভিউয়ের মধ্যে সংজ্ঞায়িত টেমপ্লেটগুলি সঠিকভাবে যোগ করা সত্ত্বেও ট্যাবের মধ্যে স্বয়ংক্রিয়ভাবে প্রদর্শিত হয় না। এই সমাধানটি নিশ্চিত করে যে `কর্মচারী তালিকা টেমপ্লেট` এবং `অ্যাডএডিট এমপ্লয়ি টেমপ্লেট` এর মতো টেমপ্লেটগুলি সঠিকভাবে লোড করা হয়েছে এবং জাভাস্ক্রিপ্ট ব্যবহার করে ট্যাবপ্যানেলের আইটেম বৈশিষ্ট্যগুলিকে ম্যানিপুলেট করে রেন্ডার করা হয়েছে৷

কী ফাংশন, `populateTabPanel`, একটি JSON স্ট্রিং থেকে পার্স করা ডেটার উপর ভিত্তি করে ট্যাব আইটেমগুলির একটি স্ট্রাকচার্ড অ্যারে তৈরি করার জন্য দায়ী৷ এই JSON ট্যাবগুলির মেটাডেটা ধারণ করে, তাদের শিরোনাম এবং তাদের উল্লেখ করা টেমপ্লেটগুলির নাম সহ। পদ্ধতি `JSON.parse()` স্ট্রিংটিকে একটি বস্তুতে রূপান্তরিত করে যা ফাংশনটি পুনরাবৃত্তি করতে পারে, গতিশীলভাবে প্রতিটি ট্যাবকে তার সংশ্লিষ্ট টেমপ্লেট দিয়ে তৈরি করে। এই গতিশীল পদ্ধতিটি নমনীয়তা নিশ্চিত করে, টেমপ্লেটগুলিকে একবার রেজারে সংজ্ঞায়িত করার অনুমতি দেয় এবং নকল ছাড়াই একাধিক ট্যাব জুড়ে পুনরায় ব্যবহার করা হয়।

`$(.dxTabPanel("instance")` পদ্ধতিটি TabPanel উইজেটের উদাহরণ পুনরুদ্ধার করে, এর বৈশিষ্ট্য এবং পদ্ধতিতে সরাসরি অ্যাক্সেস দেয়। রানটাইমে ট্যাবপ্যানেলে নতুন বিষয়বস্তু ইনজেক্ট করার জন্য এটি গুরুত্বপূর্ণ। পার্স করা JSON থেকে টেমপ্লেটগুলিকে প্রয়োজনীয় কাঠামোতে ম্যাপ করার পরে, `বিকল্প("আইটেম", আইটেম)` পদ্ধতিটি নতুন ট্যাব সংজ্ঞা সহ TabPanel-এর বিষয়বস্তু আপডেট করে। এই পদক্ষেপটি নিশ্চিত করে যে সঠিক টেমপ্লেটগুলি তাদের নিজ নিজ ট্যাবে বরাদ্দ করা হয়েছে, সফলভাবে তৈরি হওয়া সত্ত্বেও ট্যাবগুলি খালি দেখা দেওয়ার সমস্যার সমাধান করে৷

এই সেটআপের একটি গুরুত্বপূর্ণ উপাদান হল `.html()` পদ্ধতিতে jQuery নির্বাচক ব্যবহার করে টেমপ্লেটের HTML বিষয়বস্তু সঠিকভাবে আনা হয়েছে তা নিশ্চিত করা। এটি গ্যারান্টি দেয় যে বিষয়বস্তু রেজার-সংজ্ঞায়িত টেমপ্লেটগুলি থেকে গতিশীলভাবে তৈরি করা ট্যাবে স্থানান্তরিত হয়েছে৷ উপরন্তু, মডুলার ফাংশন যেমন `পার্স টেমপ্লেট` এবং `আপডেট ট্যাবপ্যানেল` কোড পঠনযোগ্যতা এবং পুনঃব্যবহারযোগ্যতা উন্নত করে, স্ক্রিপ্টটিকে বজায় রাখা এবং প্রসারিত করা সহজ করে তোলে। কার্যকারিতা যাচাই করার জন্য, Jest ব্যবহার করে ইউনিট পরীক্ষাগুলি প্রয়োগ করা হয়, যাচাই করে যে TabPanel-এ প্রত্যাশিত সংখ্যক ট্যাব রয়েছে এবং শিরোনামগুলি পূর্বনির্ধারিত মানগুলির সাথে মেলে।

ASP.NET কোরে গতিশীলভাবে DevExpress ট্যাবপ্যানেল টেমপ্লেটগুলি পরিচালনা করা

এই পদ্ধতিটি ASP.NET কোরে DevExpress উপাদানগুলির সাথে জাভাস্ক্রিপ্টকে একীভূত করার উপর দৃষ্টি নিবদ্ধ করে যাতে ডায়নামিকভাবে ট্যাব টেমপ্লেটগুলিকে লোড করা এবং পরিচালনা করা যায়, সামগ্রীর সঠিক রেন্ডারিং নিশ্চিত করা যায়৷

// Front-end solution using JavaScript for dynamic template handling
function populateTabPanel() {
    let jsonString = '{
        "ParentID": 1,
        "ParentName": "Administration",
        "ID": 1,
        "Text": "Employee",
        "Templates": [
            {"ID": 1, "TemplateName": "employeeListTemplate", "Title": "Current Employees"},
            {"ID": 2, "TemplateName": "addEditEmployeeTemplate", "Title": "Add/Update Employee"}
        ]
    }';
    let templateObj = JSON.parse(jsonString);
    let items = templateObj.Templates.map(t => ({
        template: $(`#${t.TemplateName}`).html(),
        title: t.Title
    }));
    $("#contentTabPanel").dxTabPanel("instance").option("items", items);
}

ডায়নামিক ট্যাব সামগ্রীর জন্য মডুলার জাভাস্ক্রিপ্ট ফাংশন ব্যবহার করা

এই সংস্করণটি রক্ষণাবেক্ষণযোগ্যতা নিশ্চিত করতে ট্যাব পার্সিং এবং আপডেট করার জন্য পৃথক ফাংশন ব্যবহার করে কোড মডুলারিটি এবং পুনঃব্যবহারের উপর জোর দেয়।

// Function to parse template JSON
function parseTemplates(json) {
    return JSON.parse(json).Templates.map(template => ({
        template: $(`#${template.TemplateName}`).html(),
        title: template.Title
    }));
}
// Function to update TabPanel with new items
function updateTabPanel(items) {
    const tabPanel = $("#contentTabPanel").dxTabPanel("instance");
    tabPanel.option("items", items);
}
// Main function to populate TabPanel
function populateTabPanel() {
    const jsonString = '{"Templates": [
        {"TemplateName": "employeeListTemplate", "Title": "Current Employees"},
        {"TemplateName": "addEditEmployeeTemplate", "Title": "Add/Update Employee"}
    ]}';
    const items = parseTemplates(jsonString);
    updateTabPanel(items);
}

DevExpress টেমপ্লেট সংজ্ঞায়িত করতে ব্যাকএন্ড রেজার কোড

উপরের জাভাস্ক্রিপ্ট কোডে গতিশীলভাবে উল্লেখ করা টেমপ্লেটগুলিকে সংজ্ঞায়িত করতে রেজার সিনট্যাক্স কীভাবে ব্যবহার করতে হয় তা এই অংশটি প্রদর্শন করে।

@(Html.DevExtreme().Button()
    .ID("addTabsButton")
    .OnClick("populateTabPanel")
    .Text("Add Tabs")
    .Type(ButtonType.Default)
    .Width(100)
)
@(Html.DevExtreme().TabPanel()
    .ID("contentTabPanel")
    .Loop(false)
    .AnimationEnabled(false)
    .DeferRendering(false)
    .RepaintChangesOnly(false)
)
@using (Html.DevExtreme().NamedTemplate("employeeListTemplate")) {
    @(Html.DevExtreme().DataGrid()
        .Columns(c => {
            c.Add().DataField("FirstName").AllowEditing(true);
            c.Add().DataField("LastName").AllowEditing(true);
        })
    )
}
@using (Html.DevExtreme().NamedTemplate("addEditEmployeeTemplate")) {
    <div>This is Admin -> Add/Edit Employee</div>
}

জাভাস্ক্রিপ্ট ট্যাবপ্যানেল কার্যকারিতার জন্য ইউনিট পরীক্ষা

এই পরীক্ষাটি ডায়নামিক জনসংখ্যার পরে ট্যাবের সংখ্যা এবং তাদের বিষয়বস্তু পরীক্ষা করে সঠিকভাবে TabPanel ফাংশন নিশ্চিত করে।

describe('TabPanel Population', () => {
    it('should correctly populate TabPanel with templates', () => {
        populateTabPanel();
        const tabPanelInstance = $("#contentTabPanel").dxTabPanel("instance");
        const items = tabPanelInstance.option('items');
        expect(items.length).toBe(2);
        expect(items[0].title).toBe('Current Employees');
        expect(items[1].title).toBe('Add/Update Employee');
    });
});

DevExpress ট্যাবপ্যানেলে ডায়নামিক কন্টেন্ট ম্যানেজমেন্ট উন্নত করা

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

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

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

DevExpress ট্যাবপ্যানেলে গতিশীলভাবে টেমপ্লেট পরিচালনা করার বিষয়ে প্রায়শই জিজ্ঞাসিত প্রশ্ন

  1. আমি কীভাবে নিশ্চিত করব যে আমার টেমপ্লেটগুলি অবিলম্বে রেন্ডার করা হয়েছে?
  2. ব্যবহার করুন DeferRendering(false) আপনার ট্যাবপ্যানেল কনফিগারেশনে সমস্ত টেমপ্লেটকে একবারে রেন্ডার করতে বাধ্য করার বিকল্প।
  3. পৃষ্ঠা রিফ্রেশ না করে কিভাবে আমি ট্যাবপ্যানেল সামগ্রী আপডেট করতে পারি?
  4. আপনি ব্যবহার করতে পারেন tabPanelInstance.option("items", newItems) জাভাস্ক্রিপ্টের মাধ্যমে গতিশীলভাবে বিষয়বস্তু আপডেট করতে।
  5. আমার টেমপ্লেটগুলি সঠিকভাবে লোড না হলে আমার কী করা উচিত?
  6. নিশ্চিত করুন যে টেমপ্লেটের নামগুলি JSON অবজেক্ট এবং এইচটিএমএল উভয় উপাদানের সাথেই মিলছে। এছাড়াও, যাচাই করুন $("#templateID").html() বৈধ বিষয়বস্তু প্রদান করে।
  7. আমি কি প্রতিটি ট্যাব নির্বাচন করা হলেই লোড করতে পারি?
  8. হ্যাঁ, আপনি সেট করতে পারেন DeferRendering(true) অলস লোডিং সক্ষম করতে, ট্যাবগুলি সক্রিয় হলেই সামগ্রী লোড হয় তা নিশ্চিত করে৷
  9. টেমপ্লেটগুলি ইনজেকশন করার সময় আমি কীভাবে ত্রুটিগুলি পরিচালনা করব?
  10. ব্যবহার করুন try-catch আপনার জাভাস্ক্রিপ্ট কোডে ত্রুটিগুলি সুন্দরভাবে পরিচালনা করতে এবং প্রয়োজনে ফলব্যাক সামগ্রী সরবরাহ করতে ব্লক করে।

ডাইনামিক টেমপ্লেট হ্যান্ডলিং সম্পর্কে চূড়ান্ত চিন্তা

DevExpress TabPanels-এ টেমপ্লেটগুলি সঠিকভাবে পরিচালনা করা নিশ্চিত করে যে ব্যবহারকারী ইন্টারফেস এতে রয়েছে ASP.NET কোর অ্যাপ্লিকেশনগুলি গতিশীল এবং প্রতিক্রিয়াশীল। এই পদ্ধতিটি পূর্ণ-পৃষ্ঠা পুনরায় লোড করার প্রয়োজনীয়তা হ্রাস করে, ব্যবহারকারীর অভিজ্ঞতা উন্নত করে। টেমপ্লেট পার্স এবং ইনজেক্ট করার জন্য জাভাস্ক্রিপ্ট ব্যবহার করে ডেভেলপারদের স্কেলেবল এবং রক্ষণাবেক্ষণযোগ্য কোড তৈরি করতে দেয়।

বিলম্বিত রেন্ডারিং অক্ষম করার মতো অপ্টিমাইজেশন এবং ত্রুটিগুলি পরিচালনা করা অদৃশ্য বিষয়বস্তু এবং ভাঙা ট্যাবগুলির মতো সাধারণ সমস্যাগুলি প্রতিরোধ করে৷ আলোচিত পদ্ধতিগুলির সাহায্যে, বিকাশকারীরা নিশ্চিত করতে পারে যে সঠিক বিষয়বস্তু গতিশীলভাবে লোড হয়েছে, তাদের ওয়েব অ্যাপ্লিকেশনগুলির মধ্যে দ্রুত এবং নির্ভরযোগ্য ব্যবহারকারীর মিথস্ক্রিয়া সরবরাহ করে।

ডায়নামিক ডেভএক্সপ্রেস ট্যাবপ্যানেল হ্যান্ডলিংয়ের জন্য উত্স এবং তথ্যসূত্র
  1. ASP.NET কোরে DevExpress ট্যাবপ্যানেল ব্যবহার করার বিস্তারিত ডকুমেন্টেশন: DevExpress ডকুমেন্টেশন .
  2. ASP.NET কোরে জাভাস্ক্রিপ্ট উপাদান পরিচালনার জন্য সর্বোত্তম অনুশীলন: ASP.NET কোর ডকুমেন্টেশন .
  3. জাভাস্ক্রিপ্টের সাথে ডায়নামিকলি ইনজেকশনের বিষয়বস্তু সম্পর্কে গভীরভাবে টিউটোরিয়াল: MDN জাভাস্ক্রিপ্ট গাইড .