多个级联下拉菜单与Angular &MVC
multiple cascading dropdown with Angular & MVC
首先道歉,这篇文章看起来有点冗长(它只是重复的代码,所以看起来比它长)。我正试图实现一个多层次的级联下拉-它的工作很好,为初始和第一级(COLUMN1 &COLUMN2),但不能用于COLUMN3。
这是控制器:
public JsonResult GetCol1()
{
using (EntityName db = new EntityName())
{
var ret = db.TABLE_NAME.Select(x => new { x.COLUMN1 }).Distinct().ToList();
return Json(ret, JsonRequestBehavior.AllowGet);
}
}
[HttpPost]
public JsonResult GetCol2(string col1)
{
using (EntityName db = new EntityName())
{
var ret = db.TABLE_NAME.Where(x => x.COLUMN1 == col1).Select(x => new { x.COLUMN2 }).Distinct().ToList();
return Json(ret, JsonRequestBehavior.AllowGet);
}
}
[HttpPost]
public JsonResult GetCol3(string col1, string col2)
{
using (EntityName db = new EntityName())
{
var ret = db.TABLE_NAME.Where(x => x.COLUMN1 == col1).Where(x => x.COLUMN2 == col2).Select(x => new { x.COLUMN3 }).Distinct().ToList();
return Json(ret, JsonRequestBehavior.AllowGet);
}
}
JS:
app.controller('DropdownPopulation', function ($scope, $http) {
//$http service for Getting Column1
$http({
method: 'GET',
url: '/Data/GetCol1'
})
.success(function (data) {
$scope.Col1Data = data;
});
//$http service for getting Column2
$scope.GetCol2 = function () {
$http({
method: 'POST',
url: '/Data/GetCol2',
data: JSON.stringify({ COLUMN1: $scope.col1 })
}).
success(function (data) {
$scope.Col2Data = data;
});
};
//$http service for getting Column3
$scope.GetCol3 = function () {
$http({
method: 'POST',
url: '/Data/GetCol3',
data: JSON.stringify({ COLUMN1: $scope.col1, COLUMN2: $scope.col2 })
}).
success(function (data) {
$scope.Col3Data = data;
});
};
};
最后是html/angular:
<!-- Column 1 -->
<div ng-controller="DropdownPopulation">
<div class="form-group">
<label class="control-label col-sm-2" for="Column1">Column1</label>
<div class="col-sm-10">
<select class="form-control" name="Column1"
data-ng-model="col1" id="Column1"
data-ng-options="c.COLUMN1 as c.COLUMN1 for c in Col1Data "
data-ng-change="GetCol2()">
<option value="" disabled selected>Select Col 1</option>
</select>
</div>
</div>
<!-- Column 2 -->
<div class="form-group">
<label class="control-label col-sm-2" for="Column2">Column2</label>
<div class="col-sm-10">
<select class="form-control" name="Column2"
data-ng-model="col2" id="Column2"
data-ng-options="c.COLUMN2 as c.COLUMN2 for c in Col2Data "
data-ng-change="GetCol3()"
data-ng-disabled="!Col1Data" >
<option value="" disabled selected>Select Col 2</option>
</select>
</div>
</div>
<!-- Column 3 -->
<div class="form-group">
<label class="control-label col-sm-2" for="Column3">Column3</label>
<div class="col-sm-10">
<select class="form-control" name="Column3"
data-ng-model="col3" id="Column3"
data-ng-options="c.COLUMN3 as c.COLUMN3 for c in Col3Data"
data-ng-disabled="!Col2Data" >
<option value="" disabled selected>Select Col 3</option>
</select>
</div>
</div>
</div>
当数据库中有数据时,Col3Data实际上返回空。
如果你知道为什么Col3Data没有返回任何东西,那么你的帮助将是最感激的。
多谢夏新
好了,我找到问题所在了。当执行以下操作时:
data-ng-options="c.COLUMN1 as c.COLUMN1 for c in Col1Data
我在第一部分使用'values'而不是'key',所以这不会返回数据。
改为下面的工作:
data-ng-options="c.COLUMN1_KEY as c.COLUMN1 for c in Col1Data
Viplock,谢谢你的帮助,我发现:
var dataToSend={ COLUMN1: $scope.col1, COLUMN2: $scope.col2 };
很有帮助。
问候,
Shaheen K
如果存在消化循环不工作的问题,您可以尝试使用$scope.$apply()
Update发送数据
$scope.GetCol3 = function () {
var dataToSend={ COLUMN1: $scope.col1, COLUMN2: $scope.col2 };
$http({
method: 'POST',
url: '/Data/GetCol3',
data: dataToSend
}).
success(function (data) {
$scope.Col3Data = data;
$scope.$apply();
});
};
相关文章:
- Angular promise return"未定义的“;值.NET MVC
- 无法使用Angular JS和spring MVC打开下载文件
- 将数据从MVC控制器传递到Angular视图,而不在最终的html中显示数据值
- 选择一个MVC框架(Javascript - 前端) - Backbone,Angular,Ember
- Web应用程序的组件 - Express.js,Angular.js和MVC混淆
- ASP NET MVC HttpDelete and Angular JS $http
- 如何加快从Angular/Mvc.net加载图像的速度
- Angular VS 2015 MVC自定义指令意外标识符和预期;错误
- 使用angular将表单发布到ASP.NET MVC ActionMethod
- ASP.NET MVC&Angular:会话到期后,Angular Factory返回登录页面的HTML,而不是
- 可以'不要让Angular应用程序在MVC布局中工作
- ASP.NET MVC&Angular:当会话Cookie过期时,自定义属性/ActionFilter,希望它重
- 我无法使用angular的$resource访问asp.net mvc控制器来返回JsonResult
- Angular.js and ASP.NET MVC 4
- Angular$http发布到MVC操作,参数为null
- Angular JS控制器没有调用Spring MVC
- 如何从angular js调用MVC控制器Action方法
- Angular&ASP.NET MVC-当后端接收到参数时,该参数为null
- 如何在Web API(MVC)中将多个变量从typescript(angular.js)传递给Controller
- 多个级联下拉菜单与Angular &MVC