2011-11-03 51 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);