【问题标题】:Call a controller method in AJAX from an User Control view in areas folder从区域文件夹中的用户控制视图调用 AJAX 中的控制器方法
【发布时间】:2012-10-06 09:43:12
【问题描述】:

我有一个 asp.net 项目,其中包含 asp.net mvc 2 代码的 Area 文件夹。 当我创建该区域时,它创建了一个“视图”和一个“控制器”文件夹。

我的视图是局部视图,所以是 .ascx。 从这个角度来看,我想在 Ajax 中调用一个控制器方法。

这是我的观点代码:

<script type="text/javascript">
  $("#<%=btnSearch.ClientID %>").click(function() {
    var text = $("#<%=tbSearchBox.ClientID %>").val;
    $.ajax({
        type: "GET",
        url: '/Areas/Settings/User/SearchUser',
        success: function(msg) {
            alert("toto");
        }
    });
  });
</script>

Areas是区域的文件夹名称,Settings是包含Controller和View文件夹的文件夹名称,User是文件夹Controller(UserController)的控制器,SearchUser是我要调用的方法。

此时,这个方法刚刚:

/// <summary>
/// Évènement déclenché lors de la recherche d'un utilisateur.
/// </summary>
/// <param name="text">Le texte à chercher.</param>
/// <returns>OK</returns>
public string SearchUser(string text)
{
    return "OK";
}

我上铬:

GET http://localhost/Areas/Settings/User/SearchUser 404 (Not Found)

我该怎么办?

【问题讨论】:

  • 你能展示你的路由设置吗?
  • @Andrei 这是我的默认路由设置: public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Settings_default", "Settings/{controller}/{action}/{id}", new { action = "索引", id = UrlParameter.Optional }); }

标签: asp.net asp.net-mvc jquery asp.net-mvc-2 asp.net-ajax


【解决方案1】:

您可以尝试用 Url.Action(..) 方法替换硬编码的 url:

..
url: '<%= Url.Action(..) %>',
..

【讨论】:

  • 我会尝试,但我有这个错误:ViewUserControl 只能在派生自 ViewPage 或 ViewPage 的页面中使用。因为我在一个带有这个指令的用户控件中: " %> ?感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多