আমি প্রগতিশীল বর্ধন সম্পর্কে শিখছি এবং আমার এজেএক্সফাইং মতামত সম্পর্কে একটি প্রশ্ন আছে। আমার এমভিসি 3 প্রকল্পে আমার একটি লেআউট পৃষ্ঠা, একটি ভিউস্টার্ট পৃষ্ঠা এবং দুটি সরল দর্শন রয়েছে।
ভিউস্টার্ট পৃষ্ঠাটি ভিউ ফোল্ডারের মূলের মধ্যে রয়েছে এবং এইভাবে সমস্ত দর্শনগুলিতে প্রযোজ্য। এটি নির্দিষ্ট করে যে সমস্ত দর্শন _Layout.cshtml
তাদের লেআউট পৃষ্ঠার জন্য ব্যবহার করা উচিত । বিন্যাস পৃষ্ঠায় দুটি নেভিগেশন লিঙ্ক রয়েছে, প্রতিটি দর্শনের জন্য একটি। লিঙ্কগুলি @Html.ActionLink()
পৃষ্ঠায় নিজেকে রেন্ডার করতে ব্যবহার করে।
এখন আমি jQuery যুক্ত করেছি এবং এই লিঙ্কগুলি হাইজ্যাক করতে এবং পৃষ্ঠায় তাদের বিষয়বস্তু গতিশীলভাবে লোড করতে এজাক্স ব্যবহার করতে চাই।
<script type="text/javascript">
$(function () {
$('#theLink').click(function () {
$.ajax({
url: $(this).attr('href'),
type: "GET",
success: function (response) {
$('#mainContent').html(response);
}
});
return false;
});
});
</script>
এটি করার জন্য আমি দুটি উপায় ভাবতে পারি তবে আমি বিশেষত দুটি পছন্দ করি না:
1) আমি সম্পূর্ণ ভিউ এর সামগ্রীগুলি নিতে পারি এবং আংশিক দৃশ্যে এগুলি রাখতে পারি, তারপরে মূল দৃশ্যটি যখন রেন্ডার করা হয় তখন আংশিক দৃশ্যে কল করুন। এইভাবে, Request.IsAjaxRequest()
নিয়ামকটি ব্যবহার করে , আমি অনুরোধটি অ্যাজাক্স অনুরোধ কিনা সেটির ভিত্তিতে আমি ফিরে যেতে View()
বা ফিরে আসতে পারি PartialView()
। আমি আজাক্স অনুরোধে নিয়মিত ভিউটি ফিরিয়ে দিতে পারি না কারণ এটির পরে লেআউট পৃষ্ঠাটি ব্যবহার করা হবে এবং আমি ইনজেক্টেড লেআউট পৃষ্ঠার একটি দ্বিতীয় অনুলিপি পাব। যাইহোক, আমি এটি পছন্দ করি না কারণ এটি @{Html.RenderPartial();}
স্ট্যান্ডার্ড জিইটি অনুরোধের জন্য খালি ভিউগুলি তৈরি করতে বাধ্য করে ।
public ActionResult Index()
{
if (Request.IsAjaxRequest())
return PartialView("partialView");
else
return View();
}
তারপরে সূচী। সিটিএসটিএমএলে এটি করুন:
@{Html.RenderPartial("partialView");}
2) আমি _ ভিউস্টার্ট থেকে বিন্যাসের পদবী সরিয়ে ফেলতে পারি এবং অনুরোধটি অ্যাজাক্স না হলে ম্যানুয়ালি এটি নির্দিষ্ট করতে পারি:
public ActionResult Index()
{
if (Request.IsAjaxRequest())
return View(); // Return view with no master.
else
return View("Index", "_Layout"); // Return view with master.
}
কারও কি এর চেয়ে ভাল পরামর্শ আছে? বিন্যাসের পৃষ্ঠাটি ছাড়া কোনও দর্শন ফিরে পাওয়ার কী উপায় আছে? এটি একটি এজাক্স অনুরোধ থাকলে স্পষ্টভাবে "আপনার বিন্যাসটি অন্তর্ভুক্ত করবেন না" বলা আরও সহজ হবে, এটি অ্যাজাক্স না থাকলে স্পষ্টভাবে লেআউটটি অন্তর্ভুক্ত করা হবে।