C# Can';无法从控制器方法的Dropdownlist中获取所选项目
我对AngularJs和MVC都是新手。当使用AngularJS和MVC在下拉列表中选择某个公司时,我试图获取该公司的相关记录。我正在填充下拉列表,但当选择一家公司时,获取相关记录的事件永远不会触发。这是我的角度控制器: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() {
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);