2012-07-23 35 views
0

我遇到了重定向撿取現有url的問題。我有一個網頁上有谷歌圖表,我已經在條形圖中添加了一個監聽器到酒吧。當用戶點擊其中一個條形圖時,case語句確定傳遞給路由器的id。使用Ajax的ASP MVC重定向

google.visualization.events.addListener(wrapper, 'select', selectHandler); 

function selectHandler() { 
    var selection = wrapper.getChart().getSelection() 
    var monthsTransform = 0; 
     switch(selection[0].column) 
      { 
      case 1: 
       monthsTransform = 0; 
       break; 
      case 2: 
       monthsTransform = 3; 
       break; 
      case 3: 
       monthsTransform = 6; 
       break; 
      case 4: 
       monthsTransform = 12; 
       break; 
      case 5: 
       monthsTransform = 18; 
       break; 

      //no need to default as already set to 0! 
      } 
      var url = "newController/newPage/" + monthsTransform; 
      window.location.href = url; 
     } 

我的問題是,

window.location.href 

被追加newController/NewPage公司現有的網址,所以它最終像:

localhost:1234/oldController/oldPage/newController/newPage/id 

回答

0

使用window.location的。 assign(「/ newController/newPage /」+ monthsTransform),而不是window.location.href

它甚至會更好如果您在新URL前添加了服務器名稱和協議,並使用Html.Action html helper生成URL。

0

檢查服務器端生成的URL我的博客文章:

http://ilovedevelopment.blogspot.co.uk/2012/04/aspnet-mvc-3-generating-actionlink-in.html

我已經粘貼下面的簡短問題的癥結所在 - 修改要求:

string absoluteAction = string.Format("{0}://{1}{2}", 
                Url.RequestContext.HttpContext.Request.Url.Scheme, 
                Url.RequestContext.HttpContext.Request.Url.Authority, 
                Url.Action("ActionName", "ControllerName", new {Id = "Data"})); 

這可以在一個控制器方法內完成,這樣你就可以做一個ajax調用並返回適當的url「absoluteAction」作爲Json結果。