কোনও অ্যাকশন লিঙ্কে কোনও এলাকার নাম কীভাবে নির্দিষ্ট করবেন?


156

আমার একটি ভাগ করা মাস্টার পৃষ্ঠা রয়েছে যা আমি আমার এমভিসি 2 অ্যাপে 2 টি আলাদা অঞ্চল থেকে ব্যবহার করছি। মাস্টার পৃষ্ঠায় একটি অ্যাকশন লিঙ্ক রয়েছে যা বর্তমানে নিয়ামক এবং ক্রিয়াটি সুনির্দিষ্ট করে, তবে অবশ্যই আমি ভুল অঞ্চলে থাকলে লিঙ্কটি কাজ করে না। আমি অ্যাকশনলিঙ্কের জন্য কোনও ওভারলোড দেখতে পাচ্ছি না যা কোনও অঞ্চল পরামিতি নেয়, এটি করা কি সম্ভব?

উত্তর:


245

এটি বের করে ..

Html.ActionLink("Link Text", "ActionName", "ControllerName", new { Area = "AreaName" }, new{})

3
@ খাঁটি.ক্রোম - হ্যাঁ এটি সম্পর্কে স্বজ্ঞাত কিছুই!
জেরেমি

3
অ্যারেনামের আগে বা পরে সাদা জায়গা নেই তা নিশ্চিত করুন। অন্যথায় এটি কেবল এটিকে উপেক্ষা করবে ... এবং তারপরে আপনাকে কী ঘটবে তার চার ঘন্টা অবাক করে দেবে .. ঠিক আমার মতো।
পাইটর কুলা

আপনি কিভাবে সেখানে পরামিতি যুক্ত করবেন?
ইয়োরো

লিঙ্কে অনুবাদ করা এই চেহারা দেখতে কেমন? মানে - যখন ফর্মটি রেন্ডার করা হয় এবং ক্লায়েন্টের কাছে ফিরে আসে।
ফ্রেনকিবি

79

এর ঠিক পরে আমি যার মধ্যে দৌড়ে এসেছি, আমি কল্পনা করেছিলাম যে অন্যেরা এর মধ্যে চলে যেতে পারে: আপনি যদি কোনও অঞ্চলের মধ্যে থেকে কোনও অঞ্চলে না হয়ে কোনও ক্রিয়ায় লিঙ্ক করতে চান তবে আপনাকে এখনও খালি স্ট্রিং হিসাবে অঞ্চলটি নির্দিষ্ট করতে হবে।

উদাহরণস্বরূপ, আমি কিছু এমভিসি কোড একটি অঞ্চলে স্থানান্তরিত করেছি এবং আমি খুঁজে পেয়েছি যে মাস্টার পৃষ্ঠায় ইউআরএলগুলি আপডেট করার দরকার ছিল যা সাইটের অন্যান্য পৃষ্ঠাগুলি রেফারেন্স করে।

কোনও অঞ্চলে নয় এমন কিছুতে url নির্দিষ্ট করতে, ব্যবহার করুন

Html.ActionLink("home", "Index", new { area = "", controller = "Home" })

4
এটি একটি খুব ভাল টিপ! তবে এটি এমভিসি 2 দিয়ে প্রত্যাশিত ফলাফল দেয় না .. ছোট সংশোধন - এইচটিএমএল.এ্যাকশনলিঙ্ক ("হোম", "সূচক", নতুন {অঞ্চল = "", নিয়ামক = "হোম"})
আলেকজান্ডার ব্লেটস্কি

15

ব্যবহার করুন:

 Html.ActionLink("Text", "ActionName", "ControllerName", new { Area = "AreaName" }, null)

দ্রষ্টব্য : চতুর্থ প্যারামিটারটি রুটটি পার করতে হবে Values, আপনি যদি খালি প্যারামিটারটি পাস করেন তবে এটি রুট স্ট্রাকচার বিবেচনা করবে এবং যদি আপনি উপযুক্ত মান পাস করেন তবে এটি এটিকে অঞ্চল হিসাবে ব্যবহার করবে use

ব্যবহার করতে ভুলবেন না nullবা new{}কারণ ক্ষণস্থায়ী 5th প্যারামিটার হিসাবে nullবা new {}কর্ম লিংক তৈরি করার সময় জন্য পদ্ধতি জমিদার করা হবে না (text,action,controller,route data)বা তার (text,action,controller,route data,html attribute)তাই সঠিক পদ্ধতি ব্যবহার


11

এমভিসি 2 তে area="root"নীচে হিসাবে আমার জন্য কাজ করা হয়েছে

Html.ActionLink("Home", "Index", "Home", new { Area = "root" }, new{})

6

আপনি একটি দৃশ্যে অনেকগুলি অঞ্চল ব্যবহার করছেন তবে আপনি এটি করতে পারেন এমন একটি ঝরঝরে কৌশল যা শীর্ষে এটি একটি ভেরিয়েবল হিসাবে সংজ্ঞায়িত করা হয়:

@{ var awesomeArea = new { area = "Awesome" }; }

@Html.Action("Something", "Somewhere", awesomeArea)
@Html.ActionLink("Stuff", "FooBar", awesomeArea)

4

একটি ব্যবহারকারীকে প্রাক-বিল্ট প্রমাণীকরণ সিস্টেমগুলিতে লিঙ্ক করার অনুমতি দেওয়ার জন্য আমি সমাধান হিসাবে এখানে এসেছি।

আমার প্রতিটি অঞ্চলে _ লোগিন পার্টিশিয়াল.কোশটিএমএল ফাইলের একটি সংস্করণ রয়েছে।

আমি সম্ভবত ফাইলটির একটি একক সংস্করণ ব্যবহার করার জন্য অ্যাপ্লিকেশনটি পেতে পারি, তবে একক লগইনকে আংশিক ব্যবহার করার চেষ্টা করার সময় আমি ত্রুটিগুলিতে চলেছি।

এটি আসল উত্পন্ন উত্পন্ন লগইন পার্টিশিয়ালটিতে কেবলমাত্র একটি সামান্য পরিবর্তন, তবে নির্দিষ্ট অঞ্চলে ব্যবহার করার সময় এটি ভালভাবে কাজ করে বলে মনে হয়।

এখানে সমস্ত কোড ব্যবহার করা হয়:

@if (Request.IsAuthenticated)
{
    <text>
    Hello, @Html.ActionLink(User.Identity.Name, "Manage", "Account", new { area = "" }, htmlAttributes: new { @class = "username", title = "Manage" })!
    @using (Html.BeginForm("LogOff", "Account", new { area = "" }, FormMethod.Post, new { id = "logoutForm" }))
 {
        @Html.AntiForgeryToken()
        <a href="javascript:document.getElementById('logoutForm').submit()">Log off</a>
 }
    </text>
}
else
{
    <ul>
        <li>@Html.ActionLink("Register", "Register", "Account", new { area = "" }, htmlAttributes: new { id = "registerLink" })</li>
        <li>@Html.ActionLink("Log in", "Login", "Account", new { area = "" }, htmlAttributes: new { id = "loginLink" })</li>
    </ul>
}

স্পষ্টত htmlAttributes:একাধিক পরামিতি ব্যবহারের জন্য কাজ খুব ভাল সেট ।
ট্র্যাভিস জ

2

যদি আপনি অঞ্চল থেকে স্ট্যান্ডার্ড ওয়েব অ্যাপ্লিকেশন লিংক যেমন প্রায়, হোম, কন্টাক ইত্যাদি ব্যবহার করতে না পারেন। আপনি লাইন পরিবর্তন করুন

@Html.ActionLink("Ana Sayfa", "Index", "Home", new { area = "" }, new {})

থেকে

দেখেছে \ Shared_Layout.cshtml


1

আমার এএসপি নেট কোর অ্যাপটিতে আমি এই জাতীয় এইচটিএমএল বৈশিষ্ট্যগুলিতে কেবল অঞ্চলটি যুক্ত করছি:

@Html.ActionLink("Link Text", "ActionName", "ControllerName", new { Area = "AreaName" , id = @Model.ID, name = @Model.name })

0

ব্যবহার

@Html.ActionLink("DisplayText", "ActionName", "ControllerName", new { area = "AreaName"}, null)

আপনি পরে যা অর্জন করবে।

ডিসপ্লে টেক্সট হ'ল যা প্রদর্শিত হবে (একই হিসাবে <a href="#">DisplayText</a>), অ্যাকশননেম হল কন্ট্রোলারে কল করা পদ্ধতি এবং কন্ট্রোলারনাম সম্ভবত আপনি যে কন্ট্রোলারটি কল করতে চান তা হ'ল! পরবর্তী প্যারামিটারটি হল 'রুটের মান' যেখানে আপনি নিজের অঞ্চল যুক্ত করবেন। আপনি যদি বর্তমানে কোনও অঞ্চলে থাকেন এবং Home/Indexউদাহরণস্বরূপ আপনার রুটে আবার নেভিগেট করতে চান তবে আপনি মানটি একটি খালি স্ট্রিং হিসাবে রেখে দেবেন, যেমন new { area = ""}। চূড়ান্ত মান হ'ল এইচটিএমএল অ্যাট্রিবিউটস 'এবং যেখানে আপনি ইচ্ছে করলে ক্লাস যুক্ত করবেন এবং যুক্ত nullহওয়াতে কোনও বৈশিষ্ট্য না থাকলে এটি হওয়া উচিত । তবে শেষ প্যারামিটারটিকে 'এইচটিএমএল বৈশিষ্ট্য' হিসাবে দেখা হয়; রুট মানগুলি স্বীকৃতি পাওয়ার জন্য, এটি হওয়া উচিতnull

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