Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angularjs http从ASP.NET获取_Javascript_Asp.net_Angularjs - Fatal编程技术网

Javascript Angularjs http从ASP.NET获取

Javascript Angularjs http从ASP.NET获取,javascript,asp.net,angularjs,Javascript,Asp.net,Angularjs,单击按钮“获取数据”后,我想获取员工列表。但JS脚本不调用公共JsonResult GetData 为什么js不调用公共JsonResult GetData错误在哪里 如何在“public JsonResult GetData(int id)”中传递参数 家庭控制器: namespace AngularJS.Controllers { public class HomeController : Controller { // // GET: /Home/ public

单击按钮“获取数据”后,我想获取员工列表。但JS脚本不调用公共JsonResult GetData

  • 为什么js不调用公共JsonResult GetData错误在哪里

  • 如何在“public JsonResult GetData(int id)”中传递参数

  • 家庭控制器:

    namespace AngularJS.Controllers
    {
    public class HomeController : Controller
    {
        //
        // GET: /Home/
    
        public ActionResult Index()
        {
            return View();
        }
    
        [HttpGet]
        public JsonResult GetData(int id)
        {
            List<Employee> employees = new List<Employee>();
            employees.Add(new Employee{Name="Jhon"});
            employees.Add(new Employee{Name="Rick"});
            return Json(employees, JsonRequestBehavior.AllowGet);
        }
    }
    public class Employee
    {
        public string Name { get; set; }
    }
    }
    
    Index.cshtml:

    @{
    ViewBag.Title = "Index";
    }
    
    <h2>Index</h2>
    <script src="~/Scripts/CustomScripts/MyScript.js"></script>
    <script src="~/Scripts/moment.js"></script>
    
    <link rel="stylesheet/less" type="text/css" href="~/Scripts/CustomScripts/style.less">
    <script src="~/Scripts/less-1.5.1.js" type="text/javascript"></script>
        <li ng-repeat="employee in Employees">
            {{employee.name}}
        </li>
    <button ng-click="getData()">Get Data</button>
    
    @{
    ViewBag.Title=“Index”;
    }
    指数
    
  • {{employee.name}
  • 获取数据
    假设您在MVC中保留了默认路由配置,请尝试以下操作:

    $scope.getData = function (id) {
        $http({ method: 'GET', url: '/Home/GetData/' + id }).
            success(function (data, status, headers, config) {
                //$scope.Employees = [{ name: 'Jhon' }, { name: 'Rick' }];
            }).
            error(function (data, status, headers, config) {
                alert('error');
            });
    };
    

    并将id从视图传递给
    getData
    函数。

    您应该在$http get调用中将其作为参数传递

    $http({ method: 'GET', url: '/Home/GetData', params: { id: id } })
    

    能否显示web api路由配置?从何处加载
    angular.js
    ?我看不到。您是否尝试过直接从浏览器的地址栏调用URL?它有用吗?如果你在mvc操作中设置了一个断点,它会被击中吗?@fikkatra这是一个控制器,而不是一个ApicController。这将是常规路由,而不是web api路由。从webmethod中删除参数,然后使用相同的$http调用,如果它调用webmethod,则意味着您也需要传递参数。要传递参数,请使用$http对象的第三个参数。这将附加id作为查询参数。这将起作用,因为如果在url中找不到id,MVC将尝试在查询字符串中查找id。但是,这将导致不同的url:/Home/GetData?id=123,而不是/Home/GetData/123。根据首选的url,使用参数或将id直接附加到url@fikkatra我知道。。如果默认路线如您所说正确设置,则应如您所建议的那样。。但在这种情况下,上述方法显然会起作用……没错。我只是想帮助OP在我们的解决方案之间做出明智的选择。@fikkatra如果您有针对性地问我,那么我宁愿使用您在WebAPI+1中建议的格式。。
    $http({ method: 'GET', url: '/Home/GetData', params: { id: id } })