asp.net mvc - mvc - एक नियंत्रक की कार्रवाई से 301 पुनर्निर्देशन वापस करना



interview asp.net-mvc (3)

उपयोग

Response.RedirectPermanent("http://www.google.com"); 

या एक नियंत्रक से एक ActionResult प्रकार लौटने के लिए:

return RedirectPermanent("http://www.google.com"); 

ASP.net 4.0 ढांचे द्वारा प्रदान की गई

https://src-bin.com

एएसपी.एक्स एमवीसी पर, एक नियंत्रक के पास "301 रीडायरेक्ट" एक बाहरी साइट के लिए "सही" तरीका क्या है?

विभिन्न रीडायरेक्ट टॉ फंक्शन केवल रिश्तेदार लिंक या रूट को लौटाते हैं जो मैंने मैन्युअल रूप से मैप किए हैं, लेकिन " http://example.com पर 301 पुनर्निर्देशन करें" कहने का कोई तरीका नहीं है।

मुझे लगता है कि मैं सिर्फ प्रतिसाद को सेट कर सकता हूं। StatusCode या Response.Redirect का उपयोग करें, लेकिन क्या यह तरीका यह MVC में किया जाना चाहिए? या फिर रीडायरेक्ट करने का एक आधिकारिक "सही रास्ता" है?

अपडेट: इस बीच, मैंने इसके लिए एक ActionResult लिखा था: स्थायी रीडायरेक्ट रेसल्ट

अपडेट 2: ASP.net 4.0 के बाद से, स्थायी पुनर्निर्देशन फ्रेमवर्क का हिस्सा हैं।


Answer #1

क्या यह किसी भी मदद करता है? http://blog.eworldui.net/post/2008/04/ASPNET-MVC---Legacy-Url-Routing.aspx

ऐसा लगता है कि आपको अपनी पसंद के यूआरएल के जरिए आभासी पथ को बदलने की आवश्यकता होगी


Answer #2

मैं विरासत URL का समर्थन करने के लिए रीडायरेक्ट करता हूं।

मेरा नियंत्रक ऐसा कुछ दिखता है ...

Public Class ThingController
    Inherits System.Web.Mvc.Controller

    Function Details(ByVal id As String) As ActionResult
        Dim RedirectId As Guid
        Select Case key
            Case "legacyurlone"
                RedirectId = New Guid("c564c0c1-c365-4b0c-bc33-fd4eadf0551b")
            Case "legacyurltwo"
                RedirectId = New Guid("157fa15b-8d5d-4f04-87cc-434f7ae93dfa")
            Case Else
                RedirectId = Guid.Empty
        End Select
        If Not RedirectId = Guid.Empty Then
            Response.StatusCode = Net.HttpStatusCode.MovedPermanently
            Response.RedirectLocation = Url.RouteUrl("IdOnly", New With {.id = RedirectId})
            Return Nothing
        End If
        Dim ThingId As Guid = New Guid(id)
        Dim db As New ThingEntities
        Dim Model As Thing = ...
        Return View(Model)
    End Function

    ...

End Class

अब मुझे आश्चर्य है कि अगर मैं दो मार्गों और नियंत्रक कार्यों के साथ इसे और अधिक साफ तौर पर संभाल सकता हूं।





asp.net-mvc