दिलचस्प पोस्ट
ऐप गेइटलेब के लिए एपाचे 2 प्रॉक्सीपैस सी में अनुमति नहीं, बल्कि सी + + में पुनः परिभाषा की अनुमति है? एंड्रॉइड स्टूडियो में * .so पुस्तकालय कैसे शामिल करें? ASP.NET MVC – नियंत्रक को पासिंग मानदंड फ़ॉर्म के बीच डेटा पास करना 'असुरक्षित मूल्य' अपवाद के कारण बिना एंज्युलर 2 में iframe src को कैसे सेट करें? क्यों नहीं जावा देखता है कि इंटीजर्स समान हैं? CodeIgniter में विचारों के भीतर विचारों को शामिल करने का सर्वोत्तम तरीका असंगत पंक्ति के अंत में सामान्य रूप से क्या दृश्य स्टूडियो का मतलब होता है? स्थानीयडीबी अलग से कैसे स्थापित करें? मैं HTML में डाउनलोड लिंक कैसे बना सकता हूं? क्या एसक्यूएल आउटपुट क्लॉज को कॉलम वापस नहीं किया जा सकता है? Android में ProgressBar अपडेट को चेतन करें अजाक्स अपडेट (अपडेटपैनल) के बाद jQuery में रिबंडिंग इवेंट्स Google chrome rehost छवि एक्सटेंशन

HTML.ActionLink विधि

मान लें कि मेरे पास एक कक्षा है

public class ItemController:Controller { public ActionResult Login(int id) { return View("Hi", id); } } 

उस पृष्ठ पर जो आइटम फ़ोल्डर में नहीं है, जहां आइटम ItemController रहता है, मैं Login विधि का एक लिंक बनाना चाहता हूं। तो किस Html.ActionLink विधि का मुझे इस्तेमाल करना चाहिए और मुझे कौन सी पैरामीटर चाहिए?

विशेष रूप से, मैं विधि के प्रतिस्थापन की तलाश कर रहा हूं

 Html.ActionLink(article.Title, new { controller = "Articles", action = "Details", id = article.ArticleID }) 

जो हाल ही में एएसपी.नेट एमवीसी अवतार में सेवानिवृत्त हो गया है।

Solutions Collecting From Web of "HTML.ActionLink विधि"

मुझे लगता है कि आप क्या चाहते हैं:

ASP.NET MVC1

 Html.ActionLink(article.Title, "Login", // <-- Controller Name. "Item", // <-- ActionMethod new { id = article.ArticleID }, // <-- Route arguments. null // <-- htmlArguments .. which are none. You need this value // otherwise you call the WRONG method ... // (refer to comments, below). ) 

यह निम्न विधि ActionLink हस्ताक्षर का उपयोग करता है:

 public static string ActionLink(this HtmlHelper htmlHelper, string linkText, string controllerName, string actionName, object values, object htmlAttributes) 

ASP.NET MVC2

दो तर्क चारों ओर बदल दिया गया है

 Html.ActionLink(article.Title, "Item", // <-- ActionMethod "Login", // <-- Controller Name. new { id = article.ArticleID }, // <-- Route arguments. null // <-- htmlArguments .. which are none. You need this value // otherwise you call the WRONG method ... // (refer to comments, below). ) 

यह निम्न विधि ActionLink हस्ताक्षर का उपयोग करता है:

 public static string ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, object values, object htmlAttributes) 

ASP.NET MVC3 +

तर्क MVC2 के समान क्रम में हैं, हालांकि आईडी मान अब जरूरी नहीं है:

 Html.ActionLink(article.Title, "Item", // <-- ActionMethod "Login", // <-- Controller Name. new { article.ArticleID }, // <-- Route arguments. null // <-- htmlArguments .. which are none. You need this value // otherwise you call the WRONG method ... // (refer to comments, below). ) 

इससे लिंक में किसी भी रूटिंग लॉजिक को हार्ड-कोडिंग से बचा जाता है।

  <a href="/Item/Login/5">Title</a> 

यह आपको निम्न HTML आउटपुट देगा, मान लें:

  1. article.Title = "Title"
  2. article.ArticleID = 5
  3. आपके पास अभी भी निर्धारित मार्ग है

। ।

 routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = "" } // Parameter defaults ); 

मैं यूसुफ किंग्री के उत्तर में जोड़ना चाहता था। उन्होंने समाधान प्रदान किया लेकिन पहले मैं इसे या तो काम करने के लिए नहीं मिल सका और न ही इसके परिणामस्वरूप आदीप गुप्ता जैसे परिणाम मिला। और फिर मुझे एहसास हुआ कि मार्ग पहले स्थान पर मौजूद है और पैरामीटर को मार्ग से बिल्कुल मिलान करने की जरूरत है। इसलिए मेरे पास एक आईडी था और उसके बाद मेरे मार्ग के लिए एक पाठ पैरामीटर था जिसे भी शामिल करने की आवश्यकता भी थी

 Html.ActionLink(article.Title, "Login", "Item", new { id = article.ArticleID, title = article.Title }, null) 

आप RouteLink() विधि को देखना चाह सकते हैं। वह एक शब्दकोष के माध्यम से आप सब कुछ निर्दिष्ट कर सकते हैं (लिंक पाठ और मार्ग नाम को छोड़कर)

मुझे लगता है कि यूसुफ ने नियंत्रक और कार्रवाई को फ़्लिप किया सबसे पहले कार्रवाई आती है तो नियंत्रक यह कुछ अजीब है, लेकिन जिस तरह से हस्ताक्षर दिखता है

बस चीजों को स्पष्ट करने के लिए, यह वह संस्करण है जो काम करता है (यूसुफ के उदाहरण का अनुकूलन):

 Html.ActionLink(article.Title, "Login", // <-- ActionMethod "Item", // <-- Controller Name new { id = article.ArticleID }, // <-- Route arguments. null // <-- htmlArguments .. which are none ) 
 Html.ActionLink(article.Title, "Login/" + article.ArticleID, 'Item") 

इस बारे में क्या

 <%=Html.ActionLink("Get Involved", "Show", "Home", new { id = "GetInvolved" }, new { @class = "menuitem", id = "menu_getinvolved" } )%> 

यदि आप सभी फैंसी-पैंट जाना चाहते हैं, तो यहां यह जानने के लिए कि आप इसे कैसे बढ़ा सकते हैं:

 @(Html.ActionLink<ArticlesController>(x => x.Details(), article.Title, new { id = article.ArticleID })) 

आपको इसे System.Web.Mvc नामस्थान में रखना होगा:

 public static class MyProjectExtensions { public static MvcHtmlString ActionLink<TController>(this HtmlHelper htmlHelper, Expression<Action<TController>> expression, string linkText) { var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext, htmlHelper.RouteCollection); var link = new TagBuilder("a"); string actionName = ExpressionHelper.GetExpressionText(expression); string controllerName = typeof(TController).Name.Replace("Controller", ""); link.MergeAttribute("href", urlHelper.Action(actionName, controllerName)); link.SetInnerText(linkText); return new MvcHtmlString(link.ToString()); } public static MvcHtmlString ActionLink<TController, TAction>(this HtmlHelper htmlHelper, Expression<Action<TController, TAction>> expression, string linkText, object routeValues) { var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext, htmlHelper.RouteCollection); var link = new TagBuilder("a"); string actionName = ExpressionHelper.GetExpressionText(expression); string controllerName = typeof(TController).Name.Replace("Controller", ""); link.MergeAttribute("href", urlHelper.Action(actionName, controllerName, routeValues)); link.SetInnerText(linkText); return new MvcHtmlString(link.ToString()); } public static MvcHtmlString ActionLink<TController>(this HtmlHelper htmlHelper, Expression<Action<TController>> expression, string linkText, object routeValues, object htmlAttributes) where TController : Controller { var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext, htmlHelper.RouteCollection); var attributes = AnonymousObjectToKeyValue(htmlAttributes); var link = new TagBuilder("a"); string actionName = ExpressionHelper.GetExpressionText(expression); string controllerName = typeof(TController).Name.Replace("Controller", ""); link.MergeAttribute("href", urlHelper.Action(actionName, controllerName, routeValues)); link.MergeAttributes(attributes, true); link.SetInnerText(linkText); return new MvcHtmlString(link.ToString()); } private static Dictionary<string, object> AnonymousObjectToKeyValue(object anonymousObject) { var dictionary = new Dictionary<string, object>(); if (anonymousObject == null) return dictionary; foreach (PropertyDescriptor propertyDescriptor in TypeDescriptor.GetProperties(anonymousObject)) { dictionary.Add(propertyDescriptor.Name, propertyDescriptor.GetValue(anonymousObject)); } return dictionary; } } 

इसमें Route Values और HTML Attributes लिए दो ओवरराइड्स भी शामिल हैं, साथ ही, आपके सभी विचारों को जोड़ना होगा: @using YourProject.Controllers कर या आप इसे अपने वेब में जोड़ सकते हैं। @using YourProject.Controllers web.config <pages><namespaces>

सर्वोत्तम पठनीयता के लिए नामित पैरामीटर का उपयोग करें और भ्रम से बचें:

 @Html.ActionLink( linkText: "Click Here", actionName: "Action", controllerName: "Home", routeValues: new { Identity = 2577 }, htmlAttributes: null) 

एमवीसी 5 के साथ मैंने इसे ऐसा किया है और यह 100% काम कोड है ….

 @Html.ActionLink(department.Name, "Index", "Employee", new { departmentId = department.DepartmentID }, null) 

आप लोग इस से एक विचार प्राप्त कर सकते हैं …

इस प्रकार का उपयोग करें:

@ Html.ActionLink ( "mainpage", "सूचकांक", "घर")

मेनपेज: टेक्स्ट इंडेक्स का नाम: एक्शन व्यू होम: होम कंट्रोलर

बेस का प्रयोग करें ActionLink

 <html> <head> <meta name="viewport" content="width=device-width" /> <title>_Layout</title> <link href="@Url.Content("~/Content/bootsrap.min.css")" rel="stylesheet" type="text/css" /> </head> <body> <div class="container"> <div class="col-md-12"> <button class="btn btn-default" type="submit">@Html.ActionLink("AnaSayfa","Index","Home")</button> <button class="btn btn-default" type="submit">@Html.ActionLink("Hakkımızda", "Hakkimizda", "Home")</button> <button class="btn btn-default" type="submit">@Html.ActionLink("Iletişim", "Iletisim", "Home")</button> </div> @RenderBody() <div class="col-md-12" style="height:200px;background-image:url(/img/footer.jpg)"> </div> </div> </body> </html>