অ্যাকশননামের উদ্দেশ্য


87

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

কেউ যদি আমাকে এমন দৃশ্যে "অ্যাকশননাম" ব্যবহারের উদাহরণ প্রদান করতে পারে যেখানে এটি দুর্দান্ত উপকার প্রদান করতে পারে বা এটি ব্যবহার করা সবচেয়ে ভাল হয় তবে আমি সত্যিই প্রশংসা করব।


সর্বাধিক সাধারণ কারণ হ'ল যখন আপনার কাছে জিইটি এবং পোস্ট উভয় পদ্ধতি থাকে এবং স্বাক্ষর একই হয়। @ কার্লোস মুউজ উত্তরটি দেখুন
রিকএন্ড এমএমএসএফটি

উত্তর:


132

এটি আপনাকে একটি সংখ্যা দিয়ে আপনার ক্রিয়া শুরু করতে বা কোনও অক্ষর অন্তর্ভুক্ত করার অনুমতি দেয় যা। নেট কোনও সনাক্তকারী হিসাবে অনুমতি দেয় না।- সর্বাধিক সাধারণ কারণ হ'ল এটি আপনাকে একই স্বাক্ষর সহ দুটি ক্রিয়া করতে দেয় (জিইটি / পোষ্ট দেখুন কোনও মজাদার নিয়ন্ত্রকের ক্রিয়া মুছুন)

উদাহরণস্বরূপ: আপনি আপনার url ক্রিয়া নাম http://example.com/products/create-productবনাম http://example.com/products/createproductবা এর মধ্যে ড্যাশগুলিকে অনুমতি দিতে পারেন http://example.com/products/create_product

public class ProductsController {

    [ActionName("create-product")]
    public ActionResult CreateProduct() {
        return View();
    }

}

46
এটি আপনাকে এমন ক্রিয়া নামগুলিও ব্যবহার করতে দেয় যা পদ্ধতিতে দেখাতে পারে Controllerযেমন দেখুন বা ফাইল।
গ্রাম

@ গ্রাম, আমরা একটি উপনাম নির্দিষ্ট না করেই কি নিয়ামককে কোনও সাধারণ পদ্ধতিতে কল করতে পারি না? আমি মনে করি আমরা পারব।
হাসান ফাহিম

4
আপনি যদি নিজের নাম রাখতে Action View()চান তবে আপনার সমস্যা হতে হবে কারণ View()আপনার বর্তমান নিয়ামকটিতে থাকা সমস্ত উল্লেখ Actionঅন্তর্নিহিত বেস পদ্ধতির পরিবর্তে এটি সমাধান করবে । সুতরাং এটি কাছাকাছি পেতে আপনি অ্যাকশনটির ActionNameঅনুমতি দেওয়ার জন্য অ্যাট্রিবিউটটি ব্যবহার করবেন Viewতবে অভ্যন্তরীণভাবে আপনি এটি PublicViewবা অনুরূপ কিছু কল করতে চাই ।
বিল্ড স্টার্ট

4
আমার মনে হয় আপনার return View("CreateProduct")বা NET করতে হবে create-product.aspxবা যেমন create-product.cshtml- কোনও দৃশ্য খুঁজে না পাওয়া সম্পর্কে মাথা ঘামাবে At কমপক্ষে আমার কোডটি এ জাতীয়ভাবে কাজ করে।
অ্যাকিলিস

@ গ্রাম আপনি কিভাবে এটি করবেন? স্পষ্টতই কোনও বৈশিষ্ট্যের সাথে নয়।
জন

61

এটি একইভাবে কার্যকর হয় যদি আপনার একই স্বাক্ষরযুক্ত দুটি ক্রিয়া থাকে যা একই url থাকা উচিত have

একটি সহজ উদাহরণ:

public ActionResult SomeAction()
{
    ...
}

[ActionName("SomeAction")]
[HttpPost]
public ActionResult SomeActionPost()
{
    ...
}

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

4
প্যারামিটার তালিকা এখানে গুরুত্বপূর্ণ অংশ নয়। এর চেয়ে আরও ভাল উদাহরণ থাকতে পারে, পয়েন্টটি হ'ল আপনার প্রয়োজন হলে এটি করতে পারেন।
কার্লোস Muñoz

4
আমরা "সামারএকশনপোস্ট" এর পরিবর্তে "সামার অ্যাকশন" এও এটি করতে পারি, তারপরে অ্যাকশননাম ব্যবহার কী ??
জিলানী পাশা

উভয় পদ্ধতির যদি একই প্যারামিটার থাকে তবে আপনি একই নাম রাখতে পারবেন না। এই ক্ষেত্রে [অ্যাকশননাম] এএসপিতে নিবন্ধিত হিসাবে ক্রিয়াটির (নাম নয়) নামকরণ করে। নেট এমভিসি রুট টেবিলটি উদ্দেশ্যে করা হয়েছে।
কার্লোস Muñoz

38

ব্যবহারকারী কোনও প্রতিবেদন ডাউনলোড করার সময় আমি এটি ব্যবহার করি যাতে তারা তাদের সিএসভি ফাইলটি সরাসরি এক্সলে সরাসরি খুলতে পারে।

[ActionName("GetCSV.csv")]
public ActionResult GetCSV(){
    string csv = CreateCSV();
    return new ContentResult() { Content = csv, ContentEncoding = System.Text.Encoding.UTF8, ContentType = "text/csv" };
}

4
এটি খুব চালাক :)
এসআরকিউ কোডার

2

এই কোড ব্যবহার করে দেখুন:

public class ProductsController
 {

    [ActionName("create-product")]
    public ActionResult CreateProduct() 
    {
        return View("CreateProduct");
    }

}

1

এই শ্রেণিটি এমন একটি বৈশিষ্ট্য উপস্থাপন করে যা ক্রিয়াটির নামের জন্য ব্যবহৃত হয় for এটি বিকাশকারীদেরকে পদ্ধতির নামের চেয়ে পৃথক ক্রিয়া নাম ব্যবহার করার অনুমতি দেয়।


0

আপনি যখন পদ্ধতি ওভারলোডিং প্রয়োগ করতে চান তখন এটি সহায়ক helpful

 public ActionResult ActorView()
        { 

            return View(actorsList);
        }


        [ActionName("ActorViewOverload")]
        public ActionResult ActorView(int id)
        {              
            return RedirectToAction("ActorView","Home");
        }
`

এখানে একজন অ্যাক্টরভিউ কোনও প্যারামিটার গ্রহণ করে না এবং অন্যটি ইনট গ্রহণ করে। অভিনেতা তালিকা দেখার জন্য ব্যবহৃত প্রথম পদ্ধতি এবং অন্যটি আইডি সহ কোনও আইডি আইডি হিসাবে মুছে ফেলার পরে একই অভিনেতা তালিকা দেখানোর জন্য ব্যবহৃত হয়। আপনি যেকোন পদ্ধতিতে ওভারলোডিংয়ের প্রয়োজন হিসাবে 'অ্যাক্টরভিউ ওভারলোড' হিসাবে অ্যাকশন নামটি ব্যবহার করতে পারেন।

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