C# Can';无法从控制器方法的Dropdownlist中获取所选项目

C# Can';无法从控制器方法的Dropdownlist中获取所选项目,c#,asp.net-mvc,angularjs,asp.net-mvc-4,C#,Asp.net Mvc,Angularjs,Asp.net Mvc 4,我对AngularJs和MVC都是新手。当使用AngularJS和MVC在下拉列表中选择某个公司时,我试图获取该公司的相关记录。我正在填充下拉列表,但当选择一家公司时,获取相关记录的事件永远不会触发。这是我的角度控制器: myApp.controller("CompanyController", function($scope, $timeout, companyService) { getCompanies(); function getCompanies() {

我对AngularJs和MVC都是新手。当使用AngularJS和MVC在下拉列表中选择某个公司时,我试图获取该公司的相关记录。我正在填充下拉列表,但当选择一家公司时,获取相关记录的事件永远不会触发。这是我的角度控制器:

myApp.controller("CompanyController", 
function($scope, $timeout, companyService)
{
    getCompanies();
    function getCompanies() {
        companyService.getCompanies()
            .success(function (data) {
                $scope.companies = data;
            })
         .error(function (error) {
             $scope.status = 'Unable to load customer data: ' + error.message;
         });
    };


    $scope.getCurrentModules = function(){
        companyId = $scope.company;
        companyService.getCurrentModules(companyId)
        .success(function (data){
            $scope.data =data;
        });

    }

});
        [System.Web.Http.HttpPost]
    public JsonResult GetCurrentModules(int companyId)
    {
       // throw new NotImplementedException();
        var modules =  this._operatorDashboardRepository.GetWithStoredProcedure("scGetDashboardModulesByWidgetID @WidgetID", "companyId");

        var moduleList = modules.OrderBy(module => module.vchRankingWidgetModuleHeaderText);

        return Json(moduleList, JsonRequestBehavior.AllowGet);
    }
这是我的角度服务:

angular.module('dashboardManagement')
.服务(“公司服务”[ “$http”,函数($http){

]))

以下是我的MVC视图:

            <td>
            Please Select an Operator:<br />
            <br />
            <div id="companyContainer">
                <div ng-controller="CompanyController">
                    <select id="CompanySelector" data-ng-model="company" data-ng-change="getCurrentModules()">
                        <option ng-repeat="company in companies" value="{{company.CompanyID}}">{{company.vchCompanyName}}</option>
                    </select>
                    <br />
                    You selected: {{company}}
                </div>
           </div>
        </td>
有人能告诉我我做错了什么吗?我在MVC控制器中设置了一个中断,以查看“GetCurrentModules”是否触发过,但它没有。非常感谢任何帮助。

选项1

getCurrentModules
方法更改为使用
$http.post
而不是
$http.get
。同时确保参数名称匹配

return $http.post('/Home/GetCurrentModules?companyId=' + id);
public JsonResult GetCurrentModules(int companyId)
选择2

更改
JsonResult
以允许
HttpGet

[System.Web.Http.HttpGet]
public JsonResult GetCurrentModules(int companyId)
再次确保参数名称与选项1匹配

getCurrentModules
方法更改为使用
$http.post
而不是
$http.get
。同时确保参数名称匹配

return $http.post('/Home/GetCurrentModules?companyId=' + id);
public JsonResult GetCurrentModules(int companyId)
选择2

更改
JsonResult
以允许
HttpGet

[System.Web.Http.HttpGet]
public JsonResult GetCurrentModules(int companyId)

再次确保参数名称匹配

我不认为
$http.get
会调用
[System.Web.http.HttpPost]
操作将其更改为
[System.Web.http.HttpGet]
谢谢您的帮助,但将其更改为HttpGet并不会使方法仍然启动。您还在
返回$http.get中传递id参数('/Home/GetCurrentModules?id='+id);
但您的操作需要参数
companyId
将其更改为
$http.get('/Home/GetCurrentModules?companyId='+id);
我认为
$http.get
不会调用
[System.Web.http.HttpPost]
操作将其更改为
[System.Web.http.HttpGet]
谢谢您的帮助,但是将其更改为HttpGet并不能使该方法仍然启动。您还在
返回$http.get('/Home/GetCurrentModules?id='+id);
中传递id参数,但您的操作需要参数
companyId
将其更改为
$http.get('/Home/GetCurrentModules?companyId='+id);