Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# ASP.NET MVC में ViewData क्या है?

ViewData ऑब्जेक्ट्स का एक डिक्शनरी है जिसे स्ट्रिंग्स को कुंजी के रूप में उपयोग करके स्टोर और रिट्रीव किया जाता है। इसका उपयोग कंट्रोलर से व्यू में डेटा ट्रांसफर करने के लिए किया जाता है। चूंकि ViewData एक डिक्शनरी है, इसमें की-वैल्यू पेयर्स होते हैं जहां प्रत्येक कुंजी एक स्ट्रिंग होनी चाहिए। ViewData केवल कंट्रोलर से व्यू में डेटा ट्रांसफर करता है, इसके विपरीत नहीं। यह केवल वर्तमान रिक्वेस्ट के दौरान वैध होता है।

ViewData में डेटा स्टोर करना

ViewData["countries"] = countriesList;

ViewData से डेटा रिट्रीव करना

string country = ViewData["MyCountry"].ToString();
चेतावनी: ViewData कंपाइल-टाइम एरर चेकिंग प्रदान नहीं करता। उदाहरण के लिए, अगर हम कुंजी नामों की गलत स्पेलिंग करते हैं, तो हमें कोई कंपाइल-टाइम एरर नहीं मिलेगा। हमें एरर के बारे में केवल रनटाइम पर पता चलेगा।

उदाहरण: कंट्रोलर

using System.Collections.Generic;
using System.Web.Mvc;

namespace DemoMvcApplication.Controllers
{
    public class HomeController : Controller
    {
        public ViewResult Index()
        {
            ViewData["Countries"] = new List
            {
                "India",
                "Malaysia",
                "Dubai",
                "USA",
                "UK"
            };
            return View();
        }
    }
}

उदाहरण: व्यू (Index.cshtml)

@{
    ViewBag.Title = "Countries List";
}

Countries List

    @foreach (string country in (List)ViewData["Countries"]) {
  • @country
  • }

आउटपुट

C# ASP.NET MVC में ViewData क्या है?

ViewData के महत्वपूर्ण गुण

विशेषताविवरण
टाइपViewDataDictionary (IDictionary<string, object> इम्प्लीमेंट करता है)
स्कोपकेवल वर्तमान रिक्वेस्ट
दिशाकंट्रोलर → व्यू (वन-वे)
टाइप सेफ्टीकोई नहीं - रनटाइम पर कास्टिंग आवश्यक
कुंजी केस-सेंसिटिविटीकेस-इनसेंसिटिव

ViewData vs ViewBag vs TempData

विशेषताViewDataViewBagTempData
टाइपडिक्शनरीडायनामिकडिक्शनरी (सेशन-बैक्ड)
सिंटैक्सViewData["key"]ViewBag.KeyTempData["key"]
लाइफटाइमवर्तमान रिक्वेस्टवर्तमान रिक्वेस्टअगली रिक्वेस्ट तक (रीडायरेक्ट के बाद भी)
टाइप सेफ्टीकमजोरकमजोरकमजोर
सीरियलाइजेशननहींनहींहां (सेशन में स्टोर)

सर्वोत्तम अभ्यास

  • स्ट्रॉन्गली-टाइप्ड व्यू मॉडल्स प्राथमिकता दें - ViewData/ViewBag के बजाय
  • केवल सरल, अस्थायी डेटा के लिए ViewData का उपयोग करें
  • कुंजी नामों के लिए कॉन्स्टेंट्स/स्ट्रिंग कॉन्स्टेंट्स का उपयोग करें टाइपो से बचने के लिए
  • कास्टिंग से पहले नल चेक करें

बेहतर दृष्टिकोण: व्यू मॉडल

// ViewModel
public class CountryViewModel
{
    public List Countries { get; set; }
    public string SelectedCountry { get; set; }
}

// Controller
public ViewResult Index()
{
    var model = new CountryViewModel
    {
        Countries = new List { "India", "Malaysia", "Dubai", "USA", "UK" }
    };
    return View(model); // स्ट्रॉन्गली टाइप्ड
}

// View (@model CountryViewModel)
@model CountryViewModel

Countries List

    @foreach (var country in Model.Countries) {
  • @country
  • }

ViewData के साथ नल-सुरक्षित एक्सेस

// व्यू में सुरक्षित एक्सेस
@{
    var countries = ViewData["Countries"] as List ?? new List();
}

    @foreach (var country in countries) {
  • @country
  • }
// या व्यू में एक्सटेंशन मेथड @Html.ViewDataList("Countries")
  1. C# ASP.NET MVC में ViewBag का उपयोग कैसे करें? C# ASP.NET MVC में ViewBag का उपयोग कैसे करें?

    ViewBag C# 4.0 में पेश की गई डायनामिक फीचर का उपयोग करता है। यह एक ऑब्जेक्ट को डायनामिकली प्रॉपर्टीज जोड़ने की अनुमति देता है। आंतरिक रूप से, यह ControllerBase क्लास की एक डायनामिक टाइप प्रॉपर्टी है जो Controller क्लास का बेस क्लास है। ViewData से ViewBag के अंतर विशेषताViewDataViewBag सिंटैक्स

  1. C# ASP.NET WebAPI में बिल्ट-इन मैसेज हैंडलर्स क्या हैं? C# ASP.NET WebAPI में बिल्ट-इन मैसेज हैंडलर्स क्या हैं?

    एक मैसेज हैंडलर एक क्लास है जो HTTP रिक्वेस्ट प्राप्त करती है और HTTP रिस्पॉन्स लौटाती है। मैसेज हैंडलर्स एब्स्ट्रैक्ट HttpMessageHandler क्लास से डेराइव होते हैं। मैसेज हैंडलर्स हमें HttpControllerDispatcher तक पहुंचने से पहले इनकमिंग रिक्वेस्ट को प्रोसेस, एडिट, या अस्वीकार करने का अवसर प्रदान करते

  1. विंडोज पीसी पर ASP.NET मशीन अकाउंट को समझना और हटाना विंडोज पीसी पर ASP.NET मशीन अकाउंट को समझना और हटाना

    विंडोज पर लोकल यूजर अकाउंट एक शानदार फीचर है जब कई लोग एक ही पीसी का उपयोग करते हैं और अपनी प्राइवेसी बनाए रखना चाहते हैं। हालांकि, कई यूजर्स के साथ एक अजीब घटना हो रही है - उनके पीसी पर ASP.NET Machine नाम का एक नया अकाउंट अपने आप दिखाई दे रहा है। अगर आप इस समस्या का सामना कर रहे हैं और चिंतित हैं