नियंत्रक से एक हैश का पुनर्निर्देशन "रीडायरेक्टऑक्शन" का उपयोग करके


87

हैलो मैं Mvc नियंत्रक से एक एंकर को वापस करना चाहता हूं

नियंत्रक का नाम = DefaultController;

public ActionResult MyAction(int id)
{
        return RedirectToAction("Index", "region")
}

ताकि जब सूचकांक को निर्देशित किया जाए तो url

http://localhost/Default/#region

इसलिए कि

<a href=#region>the content should be focus here</a>

मैं यह नहीं पूछ रहा हूं कि क्या आप इसे इस तरह से कर सकते हैं: मैं अपने URL में एक एंकर टैग कैसे जोड़ सकता हूं?



जवाबों:


133

मैंने इस तरह पाया:

public ActionResult MyAction(int id)
{
    return new RedirectResult(Url.Action("Index") + "#region");
}

आप इस क्रिया विधि का उपयोग भी कर सकते हैं:

var url = UrlHelper.GenerateUrl(
    null,
    "Index",
    "DefaultController",
    null,
    null,
    "region",
    null,
    null,
    Url.RequestContext,
    false
);
return Redirect(url);

http://msdn.microsoft.com/en-us/library/ee703653.aspx


1
आप एक जीनियस मेट हैं! यहां मैंने जो किया वह समाप्त कर दिया: नया पुनर्निर्देशन वापस करें (Url.Action ("इंडेक्स", नया {PKMvrEmployeeId = MvrId}) + "# भाग";
छिपा दिया

1
+1 को रीडायरेक्ट (..) विधि के बजाय RedirectResult का उपयोग करने के लिए। रिलीज और IIS6 के तहत MVC में आप पुनर्निर्देशन के कारण होने वाले अपवादों को समाप्त कर सकते हैं क्योंकि एक अनुरोध शायद पहले से ही पुनर्निर्देशित है, या एक बच्चे की कार्रवाई का हिस्सा है, या सामग्री पहले से ही भेजी गई है।
जैन्स

2
MVC 5 में, RedirectToAction का उपयोग करते समय यह # 23% से बचने के लिए प्रकट होता है। क्या कोई और इसका अनुभव नहीं कर रहा है?
जेकजार्डन

मेरे लिए, यह उसी विधि का उपयोग करने पर फिर से वापस जा रहा है।
जीशान अहमद खलील

14

महान जवाब gdoron। यहां एक और तरीका है जो मैं उपयोग करता हूं (बस यहां उपलब्ध समाधानों को जोड़ने के लिए)।

return Redirect(String.Format("{0}#{1}", Url.RouteUrl(new { controller = "MyController", action = "Index" }), "anchor_hash");

जाहिर है, गॉर्डन के जवाब के साथ इस सरल मामले में निम्नलिखित के साथ एक क्लीनर बनाया जा सकता है;

return new RedirectResult(Url.Action("Index") + "#anchor_hash");

पहला विकल्प अच्छी तरह से काम करता है अगर आपकी कार्रवाई एक अलग नियंत्रक में है।
चाड हेडकॉक

9

डॉट नेट कोर में एक सरल तरीका

public IActionResult MyAction(int id)
{
    return RedirectToAction("Index", "default", "region");
}

उपरोक्त पैदावार / डिफ़ॉल्ट / सूचकांक # क्षेत्र । 3 पैरामीटर खंड है जो इसे # के बाद जोड़ता है।

Microsoft डॉक्स - कंट्रोलरबेस


4

स्क्वॉल के उत्तर पर विस्तार करने के लिए: क्लीनर कोड के लिए स्ट्रिंग प्रक्षेप का उपयोग करना। यह विभिन्न नियंत्रकों पर कार्रवाई के लिए भी काम करता है।

return Redirect($"{Url.RouteUrl(new { controller = "MyController", action = "Index" })}#anchor");
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.