【问题标题】:View not rendering MVC 4查看不渲染 MVC 4
【发布时间】:2012-08-17 12:39:47
【问题描述】:

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

当在特定页面上单击一个按钮时,会生成一个 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 的新手。任何帮助将不胜感激。

【问题讨论】:

    标签: asp.net-mvc jquery asp.net-mvc-4


    【解决方案1】:

    正如我之前在跟踪它时提到的,它执行 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

    【讨论】:

    • 感谢您的快速回复,因为您可能已经猜到我也是 ajax 新手,非常感谢让我度过了一个周末 :)
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-04-10
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      相关资源
      最近更新 更多