2012-09-19 38 views
0

假設我談論的ASP.NET MVC 3應用程序,該方案是一樣的東西獲取原始URL中的回調

  1. 我瀏覽到返回一個視圖
  2. 接下來我的URL http://localhost:60088/Example?param1=test123點擊一個按鈕觸發一個Ajax調用返回一個JSON字符串

的URL http://localhost:60088/Example/DoSomethign所以,我的困境是,在DoSomething控制器動作我需要得到在第一步通過了param1參數。

我的第一個看法是做這樣的事情:

public ActionResult DoSomething() 
{ 
    ... 

    Uri baseUrl = this.Request.UrlReferrer; 
    // Somehow extract the parameter from baseUrl 

    ... 
} 

但我不知道這是一個好主意,在所有...

問題:

  1. 安全地假設this.Request.UrlReferrer總是具有在非c中調用的URL allback方式(即使我在_DoSomething_第一次回調之後再做了幾個callbak)?

  2. 有沒有更好的方法來完成我試圖做的?

回答

3

否;你不能認爲推薦人會一直存在。

相反,您應該將原始網址作爲參數包含在AJAX請求中。

+0

:(...我懷疑這將是答案。可悲的是我需要在應用程序中的幾個不同的回調中做到這一點,所以可能我會結束在會話對象上持續參數...無論如何,我會不回答問題,看看是否有其他想法出現 –

0

在你的行動,返回的視圖中,您可以在param1添加到ViewBag,是這樣的:

public ActionResult Example(string param1) 
{ 
    ViewBag.Param1 = param1; 
    return View(); 
} 

然後在Ajax調用,只需通過ViewBag.Param1作爲路由值。它有時可能是空的,但這不應該傷害任何東西。