【问题标题】:MVC Angular JS - $get callingMVC Angular JS - $get 调用
【发布时间】:2014-02-16 14:20:23
【问题描述】:

我有 $get 调用我的 C#- MVC - Angular Js Proj 。 请求的 url 对我来说不正确,并且路由到计算机上的根 proj 文件夹

   $http.get('../Home/GetResponse').success(function (response) {
            alert(response);
        });

鉴于我的控制器名称是“HomeController”并且函数是“GetResponse”,我应该如何编写 url?

谢谢。

【问题讨论】:

  • 嗨!没关系 。我将 html 文件替换为 cshtml 并从 proj 运行它 - 不是按文件 ..

标签: c# asp.net-mvc angularjs


【解决方案1】:

用途:

 $http.get('Home/GetResponse').success(function (response) {
            alert(response);
        });

【讨论】:

  • 它不工作。我得到网址:file:///C:/Users//Documents/Visual%20Studio%202010/Projects/MyProj/MyProj/Views/Home/~/Home/GetResponse
  • $http.get('Home/GetResponse').success(function (response) { alert(response); });
  • 不好。 file:///C:/Users//Documents/Visual%20Studio%202010/Projects/MyProj/MyProj/‌​Views/Home/Home/GetResponse
【解决方案2】:

通过使用 $http.get 您正在发出一个 http 请求。此请求只能由 Web 服务器处理。

您应该在 IIS 中托管您的 asp.net MVC 网站,并且您的 $http.get 应该使用类似于以下行的地址

http://localhost/Home/GetResponse

现在您正尝试向文件系统上的文件发出 http 请求,但该请求不起作用。它希望找到一个名为 Home 的文件夹和一个名为 GetResponse 的文件。

只有 IIS 能够加载可以将路由(在本例中为 /Home/GetResponse)转换为控制器上的操作的 http 模块。

【讨论】:

  • 在这种情况下,我将被拒绝访问,因为它是跨域调用 JS 。
  • 你的 angularjs 代码是同一个 mvc 网站的一部分吗?如果是,您还应该通过 Web 服务器而不是文件系统加载网页。您也可以使用 Visual Studio 的内置 Web 服务器。这可以通过编辑 Web 项目的属性来配置。请注意,Visual Studio 的服务器使用的端口不会是默认的 80。
  • 我很高兴它能正常工作。请务必标记正确的答案,以帮助可能遇到相同问题的其他人。
【解决方案3】:
$http.get(baseurl+'Home/GetResponse').success(function (response) {
            alert(response);
        });

只需在布局页面中添加baseurl为

var baseurl=@Url.Content("~/");

【讨论】:

    猜你喜欢
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 2015-06-04
    • 1970-01-01
    相关资源
    最近更新 更多