NonAction অ্যাট্রিবিউট ব্যবহার করা হয় যখন আমরা একটি কন্ট্রোলারে পাবলিক মেথড চাই কিন্তু সেটিকে একটি অ্যাকশন মেথড হিসেবে চিহ্নিত করতে চাই না। একটি অ্যাকশন মেথড হলো একটি কন্ট্রোলারে পাবলিক মেথড যা URL ব্যবহার করে আহ্বান করা যায়। তাই, ডিফল্টভাবে, যদি কোনো কন্ট্রোলারে কোনো পাবলিক মেথড থাকে তবে সেটি URL রিকোয়েস্ট ব্যবহার করে আহ্বান করা যায়। কন্ট্রোলারের পাবলিক মেথডগুলোর অ্যাক্সেস রিস্ট্রিক্ট করতে NonAction অ্যাট্রিবিউট ব্যবহার করা যায়।
এখন HomeController বিবেচনা করি যাতে দুটি পাবলিক মেথড MyMethod1 and MyMethod2 আছে।
কন্ট্রোলার
উদাহরণ
using System.Web.Mvc;
namespace DemoMvcApplication.Controllers
{
public class HomeController : Controller
{
public string MyMethod1()
{
return "My Method 1 Invoked
";
}
public string MyMethod2()
{
return "My Method 2 Invoked
";
}
}
}
নিচের URLগুলো ব্যবহার করে HomeController-এ উভয় মেথড আহ্বান করি।
https://localhost:59146/Home/MyMethod1
https://localhost:59146/Home/MyMethod2
আমরা MyMethod2 কোনো ইন্টারনাল উদ্দেশ্যে ব্যবহার করছি, এবং আমরা চাই না যে এটি URL রিকোয়েস্ট ব্যবহার করে আহ্বান করা যায়। এটি অর্জন করতে, এটিকে NonAction অ্যাট্রিবিউট দিয়ে ডেকোরেট করতে হবে।
কন্ট্রোলার
উদাহরণ
using System.Web.Mvc;
namespace DemoMvcApplication.Controllers
{
public class HomeController : Controller
{
public string MyMethod1()
{
return "My Method 1 Invoked
";
}
[NonAction]
public string MyMethod2()
{
return "My Method 2 Invoked
";
}
}
}
আউটপুট
MyMethod2 NonAction করার পর URL দিয়ে অ্যাক্সেস করলে 404 এরর দেখায়।