asp.net-mvc - questions - mvc tutorial




एएसपी.नेट एमवीसी एचटीएमएल.एक्शनलिंक में एक एंकर टैग सहित (5)

एएसपी.नेट एमवीसी में, मैं एक लिंक बनाने की कोशिश कर रहा हूं जिसमें एक एंकर टैग शामिल है (यानी, उपयोगकर्ता को पृष्ठ पर निर्देशित करना, और पृष्ठ का एक विशिष्ट अनुभाग)।

जिस यूआरएल को मैं बनाने की कोशिश कर रहा हूं उसे निम्न जैसा दिखना चाहिए:

<a href="/category/subcategory/1#section12">Title for a section on the page</a>

मेरा रूटिंग मानक के साथ स्थापित है:

routes.MapRoute("Default", "{controller}/{action}/{categoryid}"); 

मैं जिस क्रिया लिंक वाक्यविन्यास का उपयोग कर रहा हूं वह है:

<%foreach (Category parent in ViewData.Model) { %>
<h3><%=parent.Name %></h3>
<ul>
<%foreach (Category child in parent.SubCategories) { %>
    <li><%=Html.ActionLink<CategoryController>(x => x.Subcategory(parent.ID), child.Name) %></li>
<%} %>
</ul>
<%} %>

मेरी नियंत्रक विधि निम्नानुसार है:

public ActionResult Subcategory(int categoryID)
{
   //return itemList

   return View(itemList);
}

उपरोक्त सही ढंग से एक यूआरएल देता है:

<a href="/category/subcategory/1">Title for a section on the page</a>

मैं नहीं समझ सकता कि # सेक्शन 12 भाग कैसे जोड़ना है। "खंड" शब्द केवल वह सम्मेलन है जिसका उपयोग मैं पृष्ठ अनुभागों को तोड़ने के लिए कर रहा हूं, और 12 उपश्रेणी, यानि, child.ID की आईडी है।

मैं यह कैसे कर सकता हूँ?


एक्शनलिंक के ओवरलोड हैं जो एक खंड पैरामीटर लेते हैं। आपके खंड के रूप में "सेक्शन 12" पास करने से आपको वह व्यवहार मिल जाएगा जो आप बाद में कर रहे हैं।

उदाहरण के लिए, LinkExtensions.ActionLink विधि (एचटीएमएलहेल्पर, स्ट्रिंग, स्ट्रिंग, स्ट्रिंग, स्ट्रिंग, स्ट्रिंग, स्ट्रिंग, ऑब्जेक्ट, ऑब्जेक्ट) को कॉल करना :

<%= Html.ActionLink("Link Text", "Action", "Controller", null, null, "section12-the-anchor", new { categoryid = "blah"}, null) %>

मुझे एएसपी.नेट एमवीसी (एएसपी.नेट एमवीसी 3+ मेरा मानना ​​है) के पैरामीटर में याद नहीं है / पैरामीटरलाबेलडेक्लेरेशन या जो कुछ भी कहा जाता है (पैरामीटर: एक्स) फीचर पेश किया गया था, लेकिन मेरे लिए यह निश्चित रूप से उचित तरीका है एएसपी.नेट एमवीसी में एंकर के साथ एक लिंक बनाएँ।

@Html.ActionLink("Some link text", "MyAction", "MyController", protocol: null, hostName: null, fragment: "MyAnchor", routeValues: null, htmlAttributes: null)

इस जवाब से एड ब्लैकबर्न एंटीपेटर्न तर्क भी इसके साथ प्रतिस्पर्धा नहीं कर सकता है।


मैं शायद मैन्युअल रूप से लिंक का निर्माण करूंगा, इस तरह:

<a href="<%=Url.Action("Subcategory", "Category", new { categoryID = parent.ID }) %>#section12">link text</a>

मैंने अभी ऐसा किया है:

<a href="@Url.Action("Index","Home")#features">Features</a>

वास्तविक जीवन उदाहरण यहां है

@Html.Grid(Model).Columns(columns =>
    {
           columns.Add()
                   .Encoded(false)
                   .Sanitized(false)
                   .SetWidth(10)
                   .Titled(string.Empty)
                   .RenderValueAs(x => @Html.ActionLink("Edit", "UserDetails", "Membership", null, null, "discount", new { @id = @x.Id }, new { @target = "_blank" }));

  }).WithPaging(200).EmptyText("There Are No Items To Display")

और लक्षित पृष्ठ में टैब हैं

<ul id="myTab" class="nav nav-tabs" role="tablist">

        <li class="active"><a href="#discount" role="tab" data-toggle="tab">Discount</a></li>
    </ul>




asp.net-mvc