2011-11-03 55 views
2

我有一個工程,我想一個javascript函數:阿賈克斯重定向不起作用一樣的ActionLink

<script language="javascript" type="text/javascript"> 
    function dofunction(dropdown) { 
     debugger; 
     for (i = 0; i < 194; i++) { 
      if (dropdown[i].selected == true) { 
       var Shrt_ttls = dropdown[i].value.toString(); 
       $.ajax({ 
        url: "/ProgramSummary/Details?titl=" + Shrt_ttls//, 
        //type: 'Post' 
       }); 
       i = 195; 
      } 
     } 
     return; 
    } 
</script> 

的代碼重定向到ProgramsummaryController的詳細方法(在調試一切工作正常和正確的值傳遞給方法和詳細方法看起來像這樣

public ActionResult Details(string titl) 
    { 
     using (var dc = new USP_Select_TRP_ProgramSummary_wShortNameDataContext()) 
     { 
      string shrt_titles = titl; 
      if (shrt_titles == null) 
      { 
       shrt_titles = "3DELRR"; 
      } 
      return View(dc.usp_Select_TRP_ProgramSummary_wShortName(shrt_titles).Single()); 
     } 
    } 

的觀點被稱爲,似乎要被罰款,並返回到_Layout.cshtml一切似乎都不錯,但沒有顯示詳細信息視圖,而是原來的索引視圖。凡爲我如果用

@Html.ActionLink("Resource(s)", "Details", "ProgramSummary", new { titl = "3DELRR"}) 

與之前相同的事件發生,而不是索引視圖,其餘的細節視圖出現。爲什麼第一種方式無法工作?

回答

3

你應該使用:

location.href = "/ProgramSummary/Details?titl=" + Shrt_ttls; 

,而不是阿賈克斯,阿賈克斯只有在JavaScript的請求,其除非你編寫代碼的時候不會被瀏覽器顯示。

0

調用$.ajax正在做出ansynchronous JavaScript的請求,您的控制器動作。那麼你的控制器返回一個視圖(HTML)作爲響應。你需要採取HTML和用它做什麼:

$.ajax({ 
    url: 'whatever', 
    success: function(data) { 
     $('#sometarget').html(data); 
    } 
} 

此外,由於這是一個AJAX請求你應該回到你的控制器PartialView,而不是一個完整的視圖:

return PartialView("SomePartialView", model);