Ajax重定向与ActionLink不同

时间:2011-11-03 17:39:04

标签: asp.net-mvc model-view-controller jquery

我有一个可以按照我的意愿运行的javascript函数:

<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到Details方法(在调试中一切正常,正确的值传递给方法,Details方法看起来像这样

    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());
        }
    }

调用View并且似乎很好并且返回到_Layout.cshtml似乎都很好但是未显示详细信息视图,而是显示原始索引视图。好像我用的是

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

发生与之前相同的事件,而不是显示详细信息视图的“索引”视图。为什么第一种方式不起作用?

2 个答案:

答案 0 :(得分:3)

您应该使用:

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

而不是Ajax,ajax只是javascript中的请求,除非你编写代码,否则它不会被浏览器显示。

答案 1 :(得分:0)

调用$.ajax正在向您的控制器操作发出异步javascript请求。然后,您的控制器将返回View(html)作为响应。您需要使用该HTML并使用它执行某些操作:

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

此外,由于这是一个AJAX请求,您应该返回一个PartialView而不是控制器中的完整视图:

return PartialView("SomePartialView", model);