查看不渲染MVC 4

问题描述:

我有一个视图,当我通过代码时,我没有被调用,我看到它到达控制器中的操作并返回视图,但它不加载视图,它只是停留在当前页。查看不渲染MVC 4

当在特定页面上单击某个按钮时,会调用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

$.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的新手。任何帮助将不胜感激。

正如我前面提到的,当我跟踪它,它执行Ajax调用 罚款和命中控制器上的行动,它只是不启动 视图。

这就是AJAX =>留在同一页面上的全部观点。如果你想替换当前页面,请不要使用任何AJAX。使用正常的Html.ActionLink

如果你的控制器操作只返回一个PartialView,你想只刷新你的页面的一部分,你可以做的是,在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

+0

谢谢你的快速反应,因为你可能已经猜到我对ajax也很陌生,非常感谢让我的周末:) – user329540 2012-08-17 13:30:32

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

我相信当响应到达时会抛出异常。