ভিউটাটা এবং টেম্পডাটার মধ্যে পার্থক্য?


95

আমি জানি ভিডেটাটা কী এবং সর্বদা এটি ব্যবহার করে তবে এএসপি.নেট প্রাকদর্শন 5 এ তারা টেম্পাটাটা নামে নতুন কিছু উপস্থাপন করেছিল।

আমি সাধারণত আমার ভিউটাটা টাইপ করি, বস্তুর পদ্ধতির পদ্ধতির অভিধান ব্যবহার না করে।

সুতরাং, আমি ভিউডাটার পরিবর্তে টেম্পাটাটা কখন ব্যবহার করব?

এর জন্য কোন সেরা অনুশীলন আছে?


উত্তর:


96

একটি বাক্যে: TempDataএকটি পার্থক্য সহ ভিউডাটার মতো: এগুলি কেবলমাত্র দুটি পর পর অনুরোধগুলির মধ্যে ডেটা ধারণ করে, এর পরে তারা ধ্বংস হয়ে যায়। আপনি TempDataত্রুটি বার্তা বা অনুরূপ কিছু পাস করতে ব্যবহার করতে পারেন ।

পুরানো হলেও, এই নিবন্ধটিতেTempData জীবনকাল সম্পর্কে ভাল বর্ণনা রয়েছে ।

যেমনটি বেন শিমিমান এখানে বলেছেন :

টেম্পডাটা হ'ল একটি সেশন-ব্যাক অস্থায়ী স্টোরেজ অভিধান যা একটি একক অনুরোধের জন্য উপলভ্য। নিয়ামকদের মধ্যে বার্তা প্রেরণে দুর্দান্ত great


আমি মনে করি এটি একটি খুব বড় পার্থক্য, এতে TempDataএকটি সাধারণ অভিধান থেকে পদ্ধতিতে পদ্ধতিতে পাস করার চেয়ে কিছু বেশি সম্ভাব্য জটিল (অধিবেশন) জড়িত থাকবে
ম্যাটি ভির্ককুনেন

29

যখন কোনও ক্রিয়া একটি রিডাইরেক্টোঅ্যাকশন ফলাফল প্রদান করে তখন এটি একটি এইচটিটিপি পুনর্নির্দেশের কারণ হয়ে দাঁড়ায় (প্রতিক্রিয়া হিসাবে পুনর্নির্দেশের সমতুল্য)। একক এইচটিটিপি পুনর্নির্দেশ অনুরোধের সময়কালের জন্য নিয়ামকের টেম্প্যাটা সম্পত্তি (অভিধান) ডেটা সংরক্ষণ করা যায়।


একই মামলায় ভিউডাটার মানটি কী সংরক্ষণ করা হবে?
ইসমাইলস

9
@ ইসমাইল: না, ভিউডাটা পুনর্নির্দেশের মাধ্যমে ডেটা সংরক্ষণ করবে না। এটি টেম্পাটাটার মূল পার্থক্য।
মারিয়ানো দেশানজে

5

ভিউডেটা:

  • ViewData অভিধানের ধরণ public ViewDataDictionary ViewData { get; set; }
  • এটি নিয়ন্ত্রণকারীর থেকে ডেটা পাস করার জন্য, একমাত্র উপায় হিসাবে ব্যবহার করা যেতে পারে
  • এটি কেবল বর্তমান অনুরোধের সময়ই জীবনযাপন করে
  • যদি স্ট্রিং পাস করে তবে টাইপকাস্ট করার দরকার নেই
  • যদি পাসিং অবজেক্ট হয় তবে আপনাকে এটি টাইপকাস্ট করতে হবে তবে তার আগে আপনাকে এটি খালি নয় কিনা তা পরীক্ষা করা দরকার
  • এটি একটি সম্পত্তি ControllerBase, যা Controllerশ্রেণীর পিতামাতার

টেম্পডেটা:

  1. TempDataঅভ্যন্তরীণভাবে ব্যবহার TempDataDictionary:public TempDataDictionary TempData { get; set; }
  2. একবার তথ্য TempDataDictionaryবস্তু সংরক্ষণ করা হয় :
    • এটি এতে অবিরত থাকে এবং যে কোনও দর্শন বা কোনও নিয়ন্ত্রণকারীর কোনও ক্রিয়াকলাপ থেকে পড়া যায়
    • এটি কেবল একবার পড়া যায়; একবার পড়লে তা শূন্য হয়ে যায়
    • এটি সেশনে সংরক্ষণ করা হয় যাতে সেশন ডেটার মেয়াদ শেষ হয়ে যায়।

এএসপি.নেট এমভিসি 2 এবং পরবর্তী সংস্করণগুলি থেকে এই আচরণটি নতুন। ASP.NET MVC এর পূর্ববর্তী সংস্করণগুলিতে, মানগুলি TempDataকেবল পরবর্তী অনুরোধ পর্যন্ত উপলব্ধ ছিল।

  1. এটি জীবন্ত, যতক্ষণ না এটি পড়া হয় বা সেশনটির মেয়াদ শেষ হয় এবং যে কোনও জায়গা থেকে পড়া যায়।

এমভিসিতে ভিউটাটা, ভিউব্যাগ, টেম্পডাটা এবং সেশনের তুলনাটি বিস্তারিত দেখুন


4

আমি এই তুলনাটি দরকারী বলে খুঁজে পেয়েছি: http://www.dotnet-tricks.com/T ्यूट /

একটি গোছা আমি জুড়ে এসেছি তা হল টেম্পডাটা মানগুলি ডিফল্টরূপে পড়ার পরে সাফ হয়ে যায়। আরও তথ্যের জন্য বিকল্প রয়েছে, পদ্ধতিগুলি 'পিক' এবং এমএসডিএন-তে 'কীপ' দেখুন


0

আমরা যখন নিয়ামক থেকে সম্পর্কিত ভিউতে ডেটা পাস করতে চাই তখন ডেটা দর্শন ব্যবহার করা হয়। দেখুন ডেটা খুব স্বল্প জীবন, এর অর্থ এটি পুনর্নির্দেশ ঘটে যখন তা ধ্বংস হয়ে যাবে। উদাহরণ (নিয়ন্ত্রক):

public ViewResult try1()
    {
        ViewData["DateTime"] = DateTime.Now;
        ViewData["Name"] = "Mehta Hitanshi";
        ViewData["Twitter"] = "@hitanshi";
        ViewData["City"] = "surat";
        return View();
    }

try1.cshtm

<table>
<tr>
    <th>Name</th>
    <th>Twitter</th>
    <th>Email</th>
    <th>City</th>
    <th>Mobile</th>
</tr>
<tr>
    <td>@ViewData["Name"]</td>
    <td>@ViewData["Twitter"]</td>
    <td>@ViewData["City"]</td>
</tr>
</table> 

টেম্পডাটা নিয়ন্ত্রণকারীদের মধ্যে বা ক্রিয়াগুলির মধ্যে ডেটা স্থানান্তর করে। এটি এক সময়ের বার্তাগুলি সঞ্চয় করতে ব্যবহৃত হয় এবং এর জীবনকাল খুব ছোট we

উদাহরণ (নিয়ন্ত্রক):

public ActionResult try3()
    {
        TempData["DateTime"] = DateTime.Now;
        TempData["Name"] = "Ravina";
        TempData["Twitter"] = "@silentRavina";
        TempData["Email"] = "Ravina12@gmail.com";
        TempData["City"] = "India";
        TempData["MobNo"] = 9998975436;
        return RedirectToAction("TempView1");
    }
    public ActionResult TempView1()
    {
        return View();
    }

টেম্প ভিউ 1.সিএসটিএম

<table>
<tr>
    <th>Name</th>
    <th>Twitter</th>
    <th>Email</th>
    <th>City</th>
    <th>Mobile</th>
</tr>
<tr>
    <td>@TempData["Name"]</td>
    <td>@TempData["Twitter"]</td>
    <td>@TempData["Email"]</td>
    <td>@TempData["City"]</td>
    <td>@TempData["MobNo"]</td>
</tr>
</table>

0

টেম্পডাটার কাছে কেবল একটি পাশ নোট।
এর মধ্যে থাকা ডেটা পরবর্তী অনুরোধ না হওয়া পর্যন্ত সংরক্ষণ করা হয় না , তবে পরবর্তী রিড অপারেশন না বলা পর্যন্ত!
দেখুন:
টেম্পাটাটা দ্বিতীয় অনুরোধের পরে ধ্বংস করবে না

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