এএসপি.নেট এমভিসির মধ্যে ViewResult()
এবং এর ActionResult()
মধ্যে পার্থক্য কী ?
public ViewResult Index()
{
return View();
}
public ActionResult Index()
{
return View();
}
এএসপি.নেট এমভিসির মধ্যে ViewResult()
এবং এর ActionResult()
মধ্যে পার্থক্য কী ?
public ViewResult Index()
{
return View();
}
public ActionResult Index()
{
return View();
}
উত্তর:
অ্যাকশনারসাল্ট একটি বিমূর্ত শ্রেণি যা বেশ কয়েকটি উপ টাইপ থাকতে পারে।
ভিউআরসাল্ট - প্রতিক্রিয়া প্রবাহে একটি নির্দিষ্ট ভিউ রেন্ডার করে
আংশিকভিউ ফলাফল - প্রতিক্রিয়া প্রবাহে একটি নির্দিষ্ট আংশিক দৃশ্য সরবরাহ করে R
EmptyResult - একটি খালি প্রতিক্রিয়া ফিরে আসে
RedirectResult - নির্দিষ্ট URL এ একটি HTTP পুনর্নির্দেশ সঞ্চালন করে
RedirectToRouteResult - প্রদত্ত রুটের ডেটার উপর ভিত্তি করে রাউটিং ইঞ্জিন দ্বারা নির্ধারিত কোনও URL- তে একটি HTTP পুনর্নির্দেশ সম্পাদন করে
জসনআরসাল্ট - প্রদত্ত ভিউডাটা অবজেক্টটিকে জেএসএন ফর্ম্যাটে সিরিয়াল করে
জাভাস্ক্রিপ্টআরসাল্ট - জাভাস্ক্রিপ্ট কোডের এক টুকরোটি প্রদান করে যা ক্লায়েন্টের উপর কার্যকর করা যেতে পারে
ContentResult - কোনও দর্শন প্রয়োজন না করে প্রতিক্রিয়া স্ট্রিমে লিখিত সামগ্রী
ফাইলকন্টেন্টরিসাল্ট - ক্লায়েন্টকে একটি ফাইল ফেরত দেয়
ফাইলস্ট্রিমআরসাল্ট - ক্লায়েন্টকে একটি ফাইল ফেরত দেয়, যা একটি স্ট্রিম সরবরাহ করে
ফাইলপথরেসল্ট - ক্লায়েন্টকে একটি ফাইল ফেরত দেয়
অ্যাকশনারসাল্ট একটি বিমূর্ত শ্রেণি।
ViewResult থেকে আহরিত ActionResult । অন্যান্য উত্পন্ন ক্লাসগুলির মধ্যে জসনআরসাল্ট এবং আংশিকভিউ রেজাল্ট অন্তর্ভুক্ত রয়েছে ।
আপনি এটি এ জাতীয়ভাবে ঘোষণা করুন যাতে আপনি পলিমারফিজমের সুবিধা নিতে পারেন এবং একই পদ্ধতিতে বিভিন্ন ধরণের ফিরিয়ে আনতে পারেন।
উদাহরণ:
public ActionResult Foo()
{
if (someCondition)
return View(); // returns ViewResult
else
return Json(); // returns JsonResult
}
এটি একই কারণে আপনি প্রতিটি বস্তুর "অবজেক্ট" ফেরত পাঠানোর পদ্ধতিটি লেখেন না। আপনার যতটা সম্ভব সুনির্দিষ্ট হওয়া উচিত। আপনি ইউনিট পরীক্ষা লেখার পরিকল্পনা করছেন তবে এটি বিশেষভাবে মূল্যবান। রিটার্নের ধরণের এবং / অথবা ফলাফল castালাইয়ের আর পরীক্ষা করা হয় না।
ভিউআরসাল্ট অ্যাকশনারসাল্টের একটি সাবক্লাস। ভিউ পদ্ধতিটি একটি ভিউরসাল্ট দেয়। সুতরাং সত্যিই এই দুটি কোড স্নিপেটগুলি ঠিক একই জিনিস করে। পার্থক্যটি হ'ল অ্যাকশন রেজাল্টের সাথে, আপনার নিয়ামক কোনও ভিউ ফেরত দেওয়ার প্রতিশ্রুতি দিচ্ছেন না - আপনি পদ্ধতিটির সংজ্ঞা পরিবর্তন না করে শর্তসাপেক্ষে কোনও পদ্ধতিতে একটি রেডাইরেক্টরসাল্ট বা অন্য কিছু ফিরিয়ে দিতে পারবেন method
অন্য উত্তরগুলি পার্থক্যগুলি সঠিকভাবে উল্লেখ করেছে, তবে মনে রাখবেন যে আপনি যদি কেবলমাত্র ভিউরসাল্ট ফিরিয়ে দেন তবে বেস অ্যাকশনারসাল্ট টাইপের পরিবর্তে আরও সুনির্দিষ্ট প্রকারটি ফিরিয়ে দেওয়া ভাল। এই নীতিটির একটি সুস্পষ্ট ব্যতিক্রম হ'ল যখন আপনার পদ্ধতিটি একশনআরসাল্ট থেকে প্রাপ্ত একাধিক প্রকার ফেরত দেয়।
এই নীতির পেছনের কারণগুলির সম্পূর্ণ আলোচনার জন্য দয়া করে এখানে সম্পর্কিত আলোচনাটি দেখুন: অবশ্যই এএসপি.নেট এমভিসি নিয়ন্ত্রক পদ্ধতিগুলি রিটার্ন অ্যাকশন রেজাল্ট?
কন্ট্রোলারে, কেউ নীচের বাক্য গঠন ব্যবহার করতে পারে
public ViewResult EditEmployee() {
return View();
}
public ActionResult EditEmployee() {
return View();
}
উপরের উদাহরণে কেবলমাত্র রিটার্নের ধরণ পরিবর্তিত হয়। একজন ফেরত ViewResult
দেয় অন্য জন ফিরে আসে ActionResult
।
অ্যাকশনারসাল্ট একটি বিমূর্ত শ্রেণি। এটি গ্রহণ করতে পারে:
ভিউআরসাল্ট, আংশিকভিউ রিসাল্ট, এমপিআরসাল্ট, রিডাইরেক্টআরসাল্ট, রিডাইরেক্টটোরআউরলেট, জসনরেসাল্ট, জাভাস্ক্রিপ্টআরসাল্ট, কনটেন্ট রিসাল্ট, ফাইলকন্টেন্টেসেসল্ট, ফাইলস্ট্রিম রিসাল্ট, ফাইলপ্যাথরেসাল্ট ইত্যাদি
ViewResult
একটি উপশ্রেণী হয় ActionResult
।
কন্ট্রোলারে আমি অ্যাকশনারসাল্ট সহ নীচের কোডটি নির্দিষ্ট করেছিলাম যা বেসভি ক্লাসে এমভিসিতে 11 টি সাব টাইপ থাকতে পারে যেমন: ভিউরসাল্ট, আংশিকভিউ রিসাল্ট, এমপিআরসাল্ট, রিডাইরেক্টসেল্ট, রিডাইরেক্টটোরউউটরেসলেট, জসনরসাল্ট, জাভাস্ক্রিপ্ট রিসাল্ট, ফাইলপ্রেসট্রেশন, ফাইলপ্রেসস্টল্ট File
public ActionResult Index()
{
if (HttpContext.Session["LoggedInUser"] == null)
{
return RedirectToAction("Login", "Home");
}
else
{
return View(); // returns ViewResult
}
}
//More Examples
[HttpPost]
public ActionResult Index(string Name)
{
ViewBag.Message = "Hello";
return Redirect("Account/Login"); //returns RedirectResult
}
[HttpPost]
public ActionResult Index(string Name)
{
return RedirectToRoute("RouteName"); // returns RedirectToRouteResult
}
তেমনিভাবে আমরা প্রতিটি 11 টি সাব-টাইপ স্পষ্ট করে নির্দিষ্ট করে না দিয়ে অ্যাকশনআরসাল্ট () ব্যবহার করে এই 11 টি সাব টাইপগুলি ফিরতে পারি। আপনি যদি বিভিন্ন ধরণের মতামত ফিরিয়ে দিচ্ছেন তবে অ্যাকশনারসাল্ট সেরা জিনিস best
আপনাকে কিছুটা সময় বাঁচাতে https://forums.asp.net/t/1448398.aspx এ আগের উত্তরটির একটি লিঙ্ক থেকে উত্তর
অ্যাকশনারসাল্ট একটি বিমূর্ত শ্রেণি, এবং এটি ভিউরসাল্ট শ্রেণির জন্য বেস শ্রেণি।
এমভিসি ফ্রেমওয়ার্কে, এটি আপনার ক্রিয়া পদ্ধতিটি প্রত্যাবর্তন করে এমন বস্তুকে রেফারেন্স করতে অ্যাকশনারসাল্ট শ্রেণি ব্যবহার করে। এবং এটিতে এক্সিকিউটর রেজাল্ট পদ্ধতিটি আহ্বান করে।
এবং ভিউআরসাল্ট এই বিমূর্ত শ্রেণীর জন্য একটি বাস্তবায়ন। এটি প্রদত্ত ভিউ নামের কিছু পূর্বনির্ধারিত পাথ (/ ভিউ / নিয়ন্ত্রক নাম /, / ভিউ / ভাগ / / ইত্যাদি) একটি দর্শন পৃষ্ঠা (সাধারণত এসপেক্স পৃষ্ঠা) সন্ধান করার চেষ্টা করবে।
আপনার পদ্ধতিটি আরও নির্দিষ্ট শ্রেণিতে ফিরে আসার জন্য সাধারণত একটি ভাল অনুশীলন। সুতরাং আপনি যদি নিশ্চিত হন যে আপনার অ্যাকশন পদ্ধতিটি কিছু দর্শন পৃষ্ঠা প্রত্যাবর্তন করবে তবে আপনি ভিউরসাল্ট ব্যবহার করতে পারেন। তবে যদি আপনার অ্যাকশন পদ্ধতির আলাদা আচরণ থাকতে পারে, যেমন হয় কোনও ভিউ রেন্ডার করুন বা পুনঃনির্দেশ সম্পাদন করুন। আপনি রিটার্নের ধরণ হিসাবে আরও সাধারণ বেস শ্রেণি অ্যাকশনারসাল্ট ব্যবহার করতে পারেন।