তিনটি উপায় রয়েছে যার মাধ্যমে আপনি উপরের সমস্যাটি সমাধান করতে পারেন
- এইচটিএমএল উপায়
- Jquery উপায়
- "অ্যাকশননেমসিলিটরঅ্যাট্রিবিউট" উপায়ে
নীচে এমন একটি ভিডিও রয়েছে যা তিনটি পদ্ধতিরই একটি প্রদর্শক উপায়ে সংক্ষিপ্তসার করে।
https://www.facebook.com/shivprasad.koirala/videos/vb.100002224977742/809335512483940
এইচটিএমএল উপায়: -
এইচটিএমএল উপায়ে আমাদের দুটি ফর্ম তৈরি করতে হবে এবং প্রতিটি ফর্মের মধ্যে "জমা দিন" বোতামটি স্থাপন করতে হবে। এবং প্রতিটি ফর্মের ক্রিয়াটি বিভিন্ন / সম্পর্কিত ক্রিয়াকে নির্দেশ করবে। আপনি নীচের কোডটি দেখতে পাচ্ছেন যে প্রথম ফর্মটি "অ্যাকশন 1" তে পোস্ট করছে এবং দ্বিতীয় ফর্মটি "অ্যাকশন 2" এ পোস্ট করবে যার উপর নির্ভর করে "জমা দিন" বোতামটি ক্লিক করা হয়েছে।
<form action="Action1" method=post>
<input type=”submit” name=”Submit1”/>
</form>
<form action="Action2" method=post>
<input type=”submit” name=”Submit2”>
</form>
আজাক্স উপায়: -
আপনি যদি একজন আজাক্স প্রেমিক হন তবে এই দ্বিতীয় বিকল্পটি আপনাকে আরও উত্তেজিত করবে। আজাক্স উপায়ে আমরা দুটি আলাদা ফাংশন "ফান 1" এবং "ফান 1" তৈরি করতে পারি, নীচের কোডটি দেখুন। এই ফাংশনগুলি জ্যাকুয়ারি বা অন্য কোনও ফ্রেমওয়ার্ক ব্যবহার করে আজাক্স কল করবে। এই ফাংশনগুলির প্রতিটি "জমা দিন" বোতামটির "অনক্লিক" ইভেন্টের সাথে আবদ্ধ হয়। এই ফাংশনগুলির প্রত্যেকটি নিজ নিজ ক্রিয়াকলাপের নামে কল করে।
<Script language="javascript">
function Fun1()
{
$.post(“/Action1”,null,CallBack1);
}
function Fun2()
{
$.post(“/Action2”,null,CallBack2);
}
</Script>
<form action="/Action1" method=post>
<input type=submit name=sub1 onclick=”Fun2()”/>
</form>
<form action="/Action2" method=post>
<input type=submit name=sub2 onclick=”Fun1()”/>
</form>
"অ্যাকশননেমসিলিটরঅ্যাট্রিবিউট" ব্যবহার করে: -
এটি একটি দুর্দান্ত এবং একটি পরিষ্কার বিকল্প। "অ্যাকশননেমসিলিটরঅ্যাট্রিবিউট" একটি সাধারণ অ্যাট্রিবিউট শ্রেণি যেখানে আমরা সিদ্ধান্ত গ্রহণের যুক্তি লিখতে পারি যা কোন ক্রিয়াটি কার্যকর করা যায় তা সিদ্ধান্ত নেবে।
তাই প্রথম জিনিসটি এইচটিএমএল-তে রয়েছে সার্ভারে শনাক্ত করার জন্য আমাদের জমা দেওয়া বোতামগুলিতে সঠিক নাম রাখতে হবে to
আপনি দেখতে পাবেন যে আমরা বোতামের নামগুলিতে "সংরক্ষণ" এবং "মুছুন" রেখেছি। এছাড়াও আপনি যে ক্রিয়াটি সুনির্দিষ্ট করতে পারেন তার জন্য আমরা কেবল কন্ট্রোলারের নাম রেখেছি "গ্রাহক" এবং কোনও নির্দিষ্ট ক্রিয়াকলাপ নয়। আমরা আশা করি অ্যাকশন নামটি "অ্যাকশননামসিলিটরঅ্যাট্রিবিউট" দ্বারা সিদ্ধান্ত নেওয়া হবে।
<form action=”Customer” method=post>
<input type=submit value="Save" name="Save" /> <br />
<input type=submit value="Delete" name="Delete"/>
</form>
সুতরাং যখন জমা দেওয়ার বোতামটি ক্লিক করা হয়, এটি প্রথমে "অ্যাকশননেসলেক্টর" বৈশিষ্ট্যটিকে হিট করে এবং তারপরে কোন জমাটি বরখাস্ত করা হয় তার উপর নির্ভর করে এটি যথাযথ ক্রিয়াটির জন্য প্রার্থনা করে।
সুতরাং প্রথম পদক্ষেপটি এমন একটি শ্রেণি তৈরি করা যা "ক্রিয়াকলাপ নাম থেকে নির্বাচন করে" শ্রেণি থেকে উত্তরাধিকার সূত্রে আসে। এই শ্রেণিতে আমরা একটি সাধারণ সম্পত্তি "নাম" তৈরি করেছি।
আমাদের "ইসভালিডনাম" ফাংশনটি ওভাররাইড করা দরকার যা সত্য বা ফ্লাস দেয়। এই ক্রিয়াটি যেখানে আমরা যুক্তিটি লিখি সেখানে কোনও ক্রিয়াকলাপ কার্যকর করতে হবে কি না। সুতরাং যদি এই ফাংশনটি সত্য ফিরে আসে তবে ক্রিয়াটি কার্যকর করা হয় অন্যথায় এটি হয় না।
public class SubmitButtonSelector : ActionNameSelectorAttribute
{
public string Name { get; set; }
public override bool IsValidName(ControllerContext controllerContext, string actionName, System.Reflection.MethodInfo methodInfo)
{
// Try to find out if the name exists in the data sent from form
var value = controllerContext.Controller.ValueProvider.GetValue(Name);
if (value != null)
{
return true;
}
return false;
}
}
উপরের ফাংশনটির প্রধান হৃদয় নীচের কোডে রয়েছে। ফর্ম থেকে পোস্ট করা সমস্ত ডেটা "মানপ্রভাইডার" সংগ্রহে রয়েছে। সুতরাং এটি প্রথমে "নাম" মানটি সন্ধান করে এবং যদি এটি HTTP অনুরোধে পাওয়া যায় তবে এটি সত্য ফিরে আসে বা অন্যথায় এটি মিথ্যা প্রত্যাবর্তন করে।
var value = controllerContext.Controller.ValueProvider.GetValue(Name);
if (value != null)
{
return true;
}
return false;
এই বৈশিষ্ট্য শ্রেণিটি তখন সংশ্লিষ্ট ক্রিয়াতে সজ্জিত হতে পারে এবং সম্পর্কিত "নাম" মান সরবরাহ করা যেতে পারে। সুতরাং যদি জমাটি এই ক্রিয়াকে আঘাত করে এবং যদি এইচটিএমএল জমা বোতামটির নামের সাথে মিলে যায় তবে ক্রিয়াটি আরও চালিত করা হয় অন্যথায় এটি তা করে না।
public class CustomerController : Controller
{
[SubmitButtonSelector(Name="Save")]
public ActionResult Save()
{
return Content("Save Called");
}
[SubmitButtonSelector(Name = "Delete")]
public ActionResult Delete()
{
return Content("Delete Called");
}
}