【问题标题】:MVC action method not getting hitMVC 操作方法未命中
【发布时间】:2016-05-07 03:13:08
【问题描述】:

我有定义左侧导航栏的布局页面。我想在左侧导航栏中加载菜单项的子选项。我为顶部菜单项添加了一个 ajax 点击事件。但它总是命中 RouteMap 中定义的默认方法,而不是我为加载局部视图而编写的操作方法。

我的 Routeconfig.cs 文件。我还有其他地图定义了这个文件。但这是受到打击的方法。

routes.MapRoute(
           name: "Default",
           url: "{controller}/{action}/{id}",
           defaults: new { 
               controller = "Client", 
               action = "Index", 
               id = UrlParameter.Optional }
        );

我的 _Layout 页面中的菜单项

 <li>
    <a href="#" id="recentlist">Recent list</a>
        <ul>
            <li>
               <a href="#" class="back">Main Menu</a>
            </li>
            <div id="recentClients"></div>  
       </ul>
 </li>

这是我在 _Layout 页面中定义的 javascript。

$('#recentlist').click(function () {           
        $.ajax({
            Url: "@Url.Action("RecentList", "Navigation")",             
            success: function (r) {
                $('#recentClients').html(r);
            }
        });
    });

但它从来没有命中我的 NavigationController 中的 RecentList 方法。它总是转到 RouteConfig.cs 中定义的默认方法

这也是我的控制器代码。

public ActionResult RecentList()
    {
        var clientModel = new ClientModel();
        var recentlList = clientModel.GetRecentList();
        return PartialView("_RecentlList", recentlList );
    }

【问题讨论】:

  • 您所显示的只是一个名为 RecentlyUsedList 而不是 RecentList 的方法 - 这是一个拼写错误(以及不正确的 id 属性)?
  • ajax 选项也应该是url: ...,而不是Url: ...(小写)
  • @StephenMuecke - 啊!!那就是问题所在。我没有意识到 U 是大写的。谢谢...

标签: ajax asp.net-mvc controller


【解决方案1】:

很难 100% 确定,但是当您尝试访问 NavigationController 中名为 RecentList 的端点时,您的 ActionResult 被命名为 RecentlyUsedList

应该是这样的:

@Url.Action("RecentlyUsedList", "Navigation");

并且控制器需要命名为NavigationController

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    相关资源
    最近更新 更多