1

我有一个视图,当我单步执行代码时没有调用它,我看到它到达控制器中的操作并返回视图,但它不加载它只是停留在当前页面上的视图。

当在特定页面上单击一个按钮时,会生成一个 ajax 帖子,调用不会加载的下一页。

我的控制器动作如下所示:

public ActionResult Comparison(int[] y)
        {
            CostModel.Getsuff(y);        

            return View(CostModel);
        }

我的路线图如下所示:

routes.MapRoute(
        name: "Compare",
        url: "Category/Comparison/{*xxxx}",
        defaults: new { Controller = "Category", Action = "Comparison" }
       ).RouteHandler 

= new CategoriesRouteHandler(); 



public class CategoriesRouteHandler : IRouteHandler
        {
            public IHttpHandler GetHttpHandler(RequestContext requestContext)
            {
                IRouteHandler handler = new MvcRouteHandler();
                var vals = requestContext.RouteData.Values;
                var list = vals["xxxx"].ToString().Split(',');
                int[] y= new int[list.Length];
                for (int i=0; i < list.Length; i++)
                  int.TryParse(list[i].ToString(),out y[i]);

                vals.Add("y", y);
                return handler.GetHttpHandler(requestContext);
            }
        } 

我的阿贾克斯

  $.ajax({ 
       type: "POST", 
      url: '@Url.Action("Comparison", "Category",  new { Categories = "PLACEHOLDER"})'.replace('PLACEHOLDER', arr),
       dataType: "json", 
       traditional: true, 
       success: function(msg){alert(msg)} 
    } ); 

正如我之前提到的,当我跟踪它时,它可以很好地执行 ajax 调用并在控制器上执行操作,它只是不启动视图。我认为这可能与该区域未在任何地方定义的事实有关?所以也许它把它扔掉了,在 MVC 4 中看不到任何地方来指定不同的区域,但我是 MVC 的新手。任何帮助将不胜感激。

4

2 回答 2

4

正如我之前提到的,当我跟踪它时,它可以很好地执行 ajax 调用并在控制器上执行操作,它只是不启动视图。

这就是 AJAX => 保持在同一页面上的全部意义。如果要替换当前页面,请不要使用任何 AJAX。使用普通的Html.ActionLink.

如果您的控制器操作仅返回 aPartialView并且您只想刷新页面的一部分,则可以在success回调中执行此操作:

$.ajax({ 
    type: "POST", 
    url: '@Url.Action("Comparison", "Category",  new { Categories = "PLACEHOLDER"})'.replace('PLACEHOLDER', arr),
    traditional: true, 
    success: function(result) {
        $('#someIdToRefresh').html(result);
    } 
}); 

另请注意,我已删除dataType: 'json',因为您的控制器操作未返回任何 JSON。它回来了text/html

于 2012-08-17T12:41:02.247 回答
1

从您的操作方法中,您将返回 HTML(呈现的视图),而您的 Ajax 调用需要 JSON 作为响应的格式。

我相信响应到达时会引发异常。

于 2012-08-17T12:43:04.850 回答