Untitled 2026-05-30 18.44.12.excalidraw

⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠ You can decompress Drawing data with the command palette: ‘Decompress current Excalidraw file’. For more info check in plugin settings under ‘Saving’

Excalidraw Data

Text Elements

Hello

Embedded Files

29beaba2b47fd86af5a038952257399e7deb7bca: 20. TestOutputHelper

Link to original


stateDiagram-v2
    [*] --> ClientRequest: ব্রাউজার থেকে রিকোয়েস্ট

    state "কন্ট্রোলার (Controller Action)" as Controller {
        state "ডেটা প্রস্তুত করা" as PrepareData
        state "রিটার্ন টাইপ নির্ধারণ" as ReturnType

        PrepareData --> ReturnType
        note right of PrepareData
            এখানে Model, ViewData,
            বা ViewBag সেট করা হয়।
        end note
    }

    ClientRequest --> Controller

    state "ডেটা পাস করার মাধ্যম" as DataPassing {
        ViewData: কি-ভ্যালু পেয়ার (Loosely Typed)
        ViewBag: ডাইনামিক প্রপার্টি (Loosely Typed)
        StronglyTypedModel: নির্দিষ্ট ক্লাস অবজেক্ট (নিরাপদ)
        MultipleModels: ViewModel বা Tuple ব্যবহার করে
    }

    ReturnType --> DataPassing: View(), PartialView(), বা ViewComponent() কল করে

    state "রেজোলিউশন ইঞ্জিন (View Engine)" as ViewEngine {
        direction TB
        state "গ্লোবাল কনফিগারেশন" as GlobalConfigs {
            _ViewImports: নেমস্পেস এবং ট্যাগ হেল্পার ইম্পোর্ট করে
            _ViewStart: ডিফল্ট লেআউট সেট করে
        }
        
        state "প্রধান ভিউ (.cshtml)" as MainView {
            HtmlRaw: র HTML রেন্ডার করে
        }
    }

    DataPassing --> GlobalConfigs
    GlobalConfigs --> MainView

    state "UI সংগঠন এবং পুনঃব্যবহারযোগ্যতা" as UIStructure {
        direction LR
        
        state "লেআউট সিস্টেম" as LayoutSystem {
            LayoutView: মূল কাঠামো (HTML, Body)
            Sections: নির্দিষ্ট অংশের জন্য জায়গা (Scripts, Styles)
            NestedLayouts: লেআউটের ভেতরে লেআউট
            RenderBody: প্রধান ভিউ এখানে রেন্ডার হয়
        }

        state "পার্শিয়াল ভিউ (Partial Views)" as Partials {
            CreatePartial: ছোট পুনঃব্যবহারযোগ্য অংশ
            PartialWithData: কন্ট্রোলার থেকে ডেটা নেয়
        }

        state "ভিউ কম্পোনেন্ট (View Components)" as ViewComp {
            VC_Logic: নিজস্ব ক্লাস লজিক থাকে
            VC_Params: প্যারামিটার গ্রহণ করে
            VC_Result: নিজস্ব ভিউ রেন্ডার করে
        }
    }

    MainView --> LayoutSystem: লেআউট ব্যবহার করলে
    MainView --> Partials: Html.PartialAsync() বা <partial> ট্যাগ
    MainView --> ViewComp: Component.InvokeAsync() বা <vc> ট্যাগ
    
    LayoutSystem --> Partials: লেআউটের ভেতরেও পার্শিয়াল থাকতে পারে
    LayoutSystem --> ViewComp: লেআউটের ভেতরেও কম্পোনেন্ট থাকতে পারে

    state "চূড়ান্ত আউটপুট" as FinalOutput {
        RenderedHTML: সব মিলে একটি HTML পেজ
    }

    LayoutSystem --> FinalOutput
    Partials --> FinalOutput
    ViewComp --> FinalOutput

    FinalOutput --> [*]: ব্রাউজারে রেসপন্স পাঠানো হলো

    %% ইন্টারভিউ এবং নোটস এর জন্য আলাদা নোট (ডায়াগ্রামের অংশ নয়, তথ্যের জন্য)
    note bottom of FinalOutput
        শিখার ধাপ: Notes -> PPT (Cheat Sheet) -> Weather App (প্র্যাকটিস) -> Interview Questions
    end note