2009-06-27 11 views
5

शीर्षक ने यह सब कहा।एएसपी.नेट एमवीसी पिछले पृष्ठ पर लौटने वाले लिंक को कैसे कार्यान्वित करें?

कुछ संदर्भ:
मैं एक खोज तंत्र मिला - खोज देखने के लिए, खोज परिणामों को देखने और एक विवरण देखने के (जो परिणामों में से एक आइटम प्रतिनिधित्व करता है, webforms में एक FormView की तरह)। मुझे विवरण दृश्य में एक लिंक चाहिए, जो उपयोगकर्ता को परिणाम देखने के लिए वापस कर देगा।

विचार:
बस TempData के बारे में पढ़ा है, लेकिन मैं अनुमान है कि मदद नहीं होगा, उपयोगकर्ता कारण कुछ कार्रवाई कॉल कर सकते हैं इससे पहले कि वह वापस जाने के लिए चाहता है।

सत्र काम कर सकता है, लेकिन मुझे यकीन नहीं है कि मुझे इसे कैसे संभालना चाहिए।

मैं इसे पूरा करने के लिए जावास्क्रिप्ट का उपयोग नहीं करना चाहता हूं।

संपादित करें:
लगता है कि मैं यूरोपीय संघ और जीई-ne`s समाधान के साथ रह सकते हैं। यहां परिणाम:

#region usages 

using System.Web.Mvc; 
using CompanyName.UI.UIApp.Infrastructure.Enums; 

#endregion 

namespace CompanyName.UI.UIApp.Infrastructure.Filters 
{ 
    /// <summary> 
    /// Apply on action method to store URL of request in session 
    /// </summary> 
    public class RememberUrlAttribute : ActionFilterAttribute 
    { 
     public override void OnActionExecuting 
      (ActionExecutingContext filterContext) 
     { 
      var httpContext = filterContext.HttpContext; 

      if (httpContext.Request.RequestType == "GET" 
       && !httpContext.Request.IsAjaxRequest()) 
      { 
       SessionManager 
       .Save(SessionKey.PreviousUrl, 
         SessionManager.Get(SessionKey.CurrentUrl) ?? 
         httpContext.Request.Url); 

       SessionManager 
       .Save(SessionKey.CurrentUrl, 
         httpContext.Request.Url); 
      } 
     } 
    } 
} 

बीटीडब्ल्यू, IAAaxaxRequest() विधि कैसे काम करती है? यह केवल एमएस AJAX समझता है या यह उससे ज्यादा चालाक है?

+0

आप को समझाने के लिए कि क्या तुम नहीं चाहते हो सकता है जावास्क्रिप्ट का उपयोग करना चाहते हैं ... कम से कम मुझे लगता है कि आप नहीं चाहते हैं? –

+1

दरअसल, मुझे कोई तरीका नहीं दिखता कि जावास्क्रिप्ट कैसे मदद कर सकता है। यहां तक ​​कि यह भी हो सकता है, मैं जेएस के खिलाफ सतर्क हूं अगर यह नेविगेशन कारण से संबंधित है सर्च इंजन जेएस समझ में नहीं आता है। –

+0

"IAAaxaxRequest() विधि कैसे काम करती है?" - यह अनुरोध में "एक्स-अनुरोधित-साथ" की तलाश में है। एमएसएजेक्स और jQuery के साथ काम करना चाहिए। एएसपी.नेट एमवीसी स्रोत देखें -> AjaxRequestExtension.cs –

उत्तर

5

मैं आप इस कस्टम फिल्टर की तरह कुछ की जरूरत है (परीक्षण नहीं - इस समय कोई वी.एस. है):

public class PrevUrlAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     var httpContext = filterContext.HttpContext; 
     var session = filterContext.HttpContext.Session; 

     if (httpContext.Request.RequestType == "GET" 
      && !httpContext.Request.IsAjaxRequest()) 
     { 
      session["PrevUrl"] = session["CurUrl"] ?? httpContext.Request.Url; 
      session["CurUrl"] = httpContext.Request.Url; 
     } 
    } 
} 
+0

आह में पाया जा सकता है ... फ़िल्टर के बारे में भी सोचा। मै उसे करने की एक कोशिश तो करूंगा। –

+0

एक और मुद्दा - आपका फ़िल्टर पिछले यूआरएल को उठाता है, वर्तमान में नहीं (मैंने फिल्टर को यादृच्छिक नाम के रूप में नामित किया है, इसलिए - यह वर्तमान यूआरएल याद रखना चाहिए)। लेकिन यह पहले से ही केक की शांति तय करने के लिए है। ;) –

1

आप पिछले यूआरएल को पुनः प्राप्त करने के लिए HTTP रेफरर हेडर की जांच कर सकते हैं।

बेशक, यदि आप इस मूल्य में उपयोगकर्ता पास नहीं करते हैं तो आपको शानदार तरीके से संभालना होगा।

+0

क्या होगा यदि उपयोगकर्ता विवरण पृष्ठ पर कुछ करता है? वह वहां कुछ कार्यों को बुला सकता है। इससे यह परीक्षा और रेफरर हेडर को याद रखना काफी कठिन होगा। –

+1

यदि रेफरर हेडर आपके परिदृश्य में उपयोगी साबित होता है, तो यह Request.UrlReferrer – bingles

-2
<a href="javascript:go(-1)">Yo</a> 

:)

+4

Yo

+1

यदि उपयोगकर्ता किसी पृष्ठ में है और उसे कुछ ही कार्यवाही करता है जो उसे उसी पृष्ठ पर रीडायरेक्ट करता है, तो यह उसे फिर से उसी पृष्ठ पर वापस कर देगा ... – madeinstefano

संबंधित मुद्दे