এএসপি.নেট এমভিসি - টেম্পডাটা - ভাল বা খারাপ অনুশীলন


96

আমি AcceptVerbsএএসপি.নেট এমভিসিতে ফর্ম এন্ট্রিগুলি নিয়ে কাজ করার জন্য স্কট গু এর পূর্বরূপ 5 ব্লগ পোস্টে বিস্তারিত পদ্ধতিটি ব্যবহার করছি :

  • জিইটি-র মাধ্যমে ব্যবহারকারী একটি খালি ফর্ম পান
  • ব্যবহারকারীরা পূরণ করা ফর্মটি পোস্টের মাধ্যমে একই অ্যাকশনে পোস্ট করে
  • অ্যাকশন ডেটা বৈধ করে, যথাযথ পদক্ষেপ নেয় এবং একটি নতুন দৃশ্যে পুনর্নির্দেশ করে

সুতরাং আমি ব্যবহার করতে হবে না TempData। এটি বলেছিল, আমাকে এখন এই প্রক্রিয়াটিতে একটি 'নিশ্চিতকরণ' পদক্ষেপ যুক্ত করতে হবে এবং এটি ব্যবহারের প্রয়োজন বলে মনে হচ্ছে TempData

কিছু কারণে, আমার ব্যবহার সম্পর্কে বিরক্তি রয়েছে TempData- এটি প্রায় নকশা করা কিছু।

এটি কি কোনও বৈধ উদ্বেগ, বা আমি এটি তৈরি করছি?


4
আপনার 'নিশ্চিতকরণ' পদক্ষেপটি জাভাস্ক্রিপ্ট কথোপকথন করার কথা বিবেচনা করুন। সার্ভার-রাউন্ডট্রিপস কম এবং আপনি এই সমস্যার মধ্যে চলে না।
আজমা

উত্তর:


26

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

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


77

টেম্পাডাটা থেকে বিরক্তি থাকার দরকার নেই ... তবে সঠিকভাবে ব্যবহার না করা হলে এটি অবশ্যই দরিদ্র ডিজাইনের ইঙ্গিত হতে পারে। আপনি যদি রেস্টলফুল ইউআরএল ব্যবহার করেন তবে টেম্পডাটা আপনার পোষ্ট অ্যাকশন থেকে আপনার জিইটি অ্যাকশনগুলিতে বার্তা স্থানান্তর করার জন্য সেরা অনুশীলন practice এই বিবেচনা:

ইউআরএল পণ্য / নতুন এ আপনার ফর্ম রয়েছে। প্রোডাক্টগুলিতে পোস্ট করুন / তৈরি করুন, যা ফর্মটিকে বৈধতা দেয় এবং পণ্যটি তৈরি করে, সাফল্যের সাথে কন্ট্রোলার ইউআরএল পণ্যগুলি / 1 এ পুনঃনির্দেশ করে এবং ত্রুটিতে ত্রুটি বার্তাগুলি প্রদর্শন করতে নতুন পণ্যগুলিতে পুনর্নির্দেশ করে would

পণ্য / 1 হ'ল পণ্যটির জন্য কেবল আদর্শ জিইটি অ্যাকশন, তবে আমরা সন্নিবেশকে ইঙ্গিত করে একটি সাফল্য দেখানোর জন্য একটি বার্তা চাই। টেম্পডাটা এটির জন্য উপযুক্ত। পোস্ট কন্ট্রোলারে টেম্পডাটাতে বার্তা যুক্ত করুন এবং দেখুন এবং আপনার হয়ে গেলে যুক্তিযুক্ত কিছু রাখুন।

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


4
আপনি যখন সরাসরি পোস্ট করতে পারেন তখন কেন সেই অতিরিক্ত কাজ করবেন Products/New? কোন মান Products/Createযুক্ত করে?
এমপেন

4
@ মার্ক, পণ্য / তৈরি ব্যবহার করে এমন পরিস্থিতি প্রতিরোধ করে যেখানে ব্যবহারকারী পোস্টব্যাকের মাধ্যমে ক্রিয়াটি সম্পূর্ণ করে, তারপরে একটি রিফ্রেশে (বা বুকমার্ক ও প্রত্যাবর্তন) ঘটনাক্রমে ক্রিয়াটি পুনরায় পূরণ করে om আরো জানার জন্য, দেখুন en.wikipedia.org/wiki/Post/Redirect/Get
ehdv

4
@ এএইচডিভি: তবে তা কি সত্যি? সাফল্যে এটি অন্য পৃষ্ঠায় পুনঃনির্দেশ করে, ব্যর্থতায় এটি ফর্ম ত্রুটিগুলি প্রদর্শন করে এবং কোনও পদক্ষেপ নেওয়া উচিত নয়, যাতে ক্ষতি হয় না। এটি কেবল সেই বিরক্তিকর প্রতিরোধ করবে "আপনি কি নিশ্চিত যে আপনি পুনরায় পোস্ট করতে চান" বার্তাটি, যা আমি প্রায়শই চাই want আমার ধারণা এটি আপনার নকশার উপর নির্ভর করে যদিও আমি আপনার পয়েন্টটি দেখতে পাচ্ছি।
এমপেন

31

আমি মনে করি টেম্পাটাটা ব্যবহারের আগে দ্বিধা করা ভাল। টেম্পাটাটা সেশনে সংরক্ষিত থাকে এবং এতে আপনার জন্য জরুরী হতে পারে যদি:

  1. আপনি এখনই আপনার সাইটে সেশন ব্যবহার করবেন না
  2. আপনার এমন একটি সিস্টেম রয়েছে যার উচ্চ স্ক্রিন হওয়া উচিত, অর্থাত আপনি পুরোপুরি সেশন স্টেট এড়াতে পছন্দ করবেন
  3. আপনি কুকি ব্যবহার করতে চান না (এমভিসি এই মুহুর্তে কুকিবিহীন সেশনগুলিকে কতটা ভাল সমর্থন করে তা আমি জানি না)

যদি আপনার সাইটে উচ্চ প্রাপ্যতা থাকা দরকার হয় তবে সেশন স্টেট প্রয়োগের জন্য অতিরিক্ত বিবেচনা রয়েছে তবে এগুলি সব সমাধানযোগ্য সমস্যা।


16
টেম্পডাটা সেশনে সংরক্ষণ করতে হবে না, যদিও এটি ডিফল্ট সরবরাহকারী - সম্ভবত এই কারণেই এটি পদ্ধতি নথিতে নেই। কাস্টম সরবরাহকারী কীভাবে লিখবেন তার উদাহরণ হিসাবে সেখানে একটি কুকি সরবরাহকারীও রয়েছে।
FinnNk

3

আমার কাছে একটি গেটমোডেল পদ্ধতি রয়েছে যা প্রথমে টেম্পডাটা ["মডেল"] যাচাই করে এবং এটি ফেরত দেয়। অন্যথায় গেটমোডেল ডাটাবেস থেকে উপযুক্ত ডেটা লোড করে।

এটি আমার কাছে একই ক্রিয়াকলাপের জন্য একই মডেলের ডেটা প্রয়োজন এমন একটি ভিন্ন দৃষ্টিভঙ্গি ফিরিয়ে নেওয়ার দরকার পড়ে এমন একটি ক্রিয়া করার পরে এটি ডাটাবেস থেকে অতিরিক্ত লোড সংরক্ষণ করে।


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

এই পরিস্থিতিতে উপযুক্ত ক্যাশেিং ব্যবস্থা ব্যবহার করা ভাল mechanism
নিকোডেমাস 13

3

সেশনহীন নিয়ন্ত্রকগুলি পরীক্ষা করে দেখুন । দেখা গেল, সেশন ব্যবহার করা একক ব্যবহারকারীর অনুরোধের সমান্তরাল সম্পাদনকে বাধা দেয় এবং এইভাবে কর্মক্ষমতা হ্রাস করে।

যেহেতু টেম্পটাটা ডিফল্টরূপে সেশন ব্যবহার করে আপনি এই বৈশিষ্ট্যটি ব্যবহার করতে পারবেন না। টেম্পডাটার জন্য আপনি কুকিগুলি ব্যবহার করতে স্যুইচ করতে পারেন তবে এটি কিছুটা বিশ্রী (কমপক্ষে আমার জন্য)। ভিউস্টেটের তুলনায় এখনও পরিষ্কার, সুতরাং এটি এত বড় ডিলব্রেকার নাও হতে পারে।


4
সেশনলেস কন্ট্রোলার সম্পর্কে আপনি সঠিক এবং সারণী টেম্পডাটা ব্যবহার করে। কিন্তু অপেক্ষা করো! সেশনটি কোনও খারাপ জিনিস নয় এবং আপনি সেশন কন্ট্রোলারদের সাথে সেশনলেস মিশ্রিত করতে পারেন match আপনি যখন সার্ভারে (ব্রাউজার থেকে) প্রচুর এজেএক্স কল করছেন তখন আপনি সত্যই সেশন_বিহীন_ নিয়ন্ত্রক চান। যখন আপনার কেবলমাত্র একটি পৃষ্ঠার-সময়ে-সময়ে হিট করার সময় .. .. আপনাকে সেশনহীন হওয়ার দরকার নেই। আসলে, এটি আপনাকে কোনও সুবিধা দেবে না ... কারণ আপনি কেবলমাত্র সার্ভারের উপর চাপ দিচ্ছেন। সুতরাং এটি মিশ্রিত করা এবং মিলানো সম্ভব।
বিশুদ্ধ.ক্রোম

2

কেন এমন বিদ্বেষ আপনার? এই জিনিসটি কেবল তার কাজটি করা এবং এটি ভাল করে তোলা :)

আপনি যদি এটি পছন্দ না করেন কারণ এটি দৃ -়-টাইপযুক্ত নয়, আপনি সর্বদা একটি মোড়ক তৈরি করতে পারেন যা আপনাকে দৃ strongly়-টাইপযুক্ত ইন্টারফেস সরবরাহ করবে।


2

এটি ভিউডাটা ব্যবহার করার মতো, এটি সম্ভবত কোনও সুরক্ষা ঝুঁকি নয়। তবে আমি টেম্পাটাটার চেয়ে ভিউ ডেটা ব্যবহার করব। তুলনার জন্য এখানে দেখুন: http://www.squaredroot.com/2007/12/20/mvc-viewdata-vs-tempdata/

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


4
দ্রষ্টব্য: আপনি যে নিবন্ধটি লিঙ্ক করেছেন সেটি তার সময়ের জন্য আপ টু ডেট ছিল তবে এটি কেবল এমভিসি 1 এর জন্য সঠিক। এমভিসি 2 তে টেম্পডেটা বেশ উল্লেখযোগ্যভাবে পরিবর্তিত হয়েছে।
মাইকম্যান

@ মিকম্যান, হ্যাঁ তবে উত্তরটি ২০০৮ এর শেষ থেকে। তবে উত্তরটি আপডেট করা উচিত?
ফিলিপ একবার্গ

0

সমস্ত ভাল উত্তর, বার্তা বরাবর পাশ করার জন্য আপনার কি এটি একবার দেখেছিল?

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

বলা হচ্ছে যে এখানে বার্তা প্রেরণের জন্য টেম্পডাটার এই ব্যবহারটি দেখুন।

http://jameschabers.com/2014/06/day-14-bootstrap-alerts-and-mvc-framework-tempdata/

মাবেই যদি কোনও অন্য পৃষ্ঠার সতর্কতাগুলিতে পুনঃনির্দেশের জন্য ব্যবহৃত হয় তবে এটি ক্যোয়ারী স্ট্রিং পদ্ধতির ব্যবহার করতে রূপান্তর করতে পারে।

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