我想要一个WebApi控制器为下拉框返回一个Dictionary(键值对)。这是使用angularjs $ http.get()方法。当我将数据返回到我的控制器并检查javascript时,看起来我正在获得一个Object,其属性名称类似于Dictionary中的my键。这不起作用,下拉列表仍为空。
来自$ http.get()的JavaScript结果
Object
test1: "test 1"
test2: "test 2"
WebAPI代码:
[HttpGet]
public Dictionary<string, string> Get()
{
return new Dictionary<string, string>(){
{ "test1", "test 1"},
{ "test2", "test 2"}
};
我认为的代码:
<select name="originType" class="form-control"
ng-model="OriginType"
ng-options="type.Key as type.Value for type in values">
</select>
我的控制员:
$http.get('/api/mycontroller');
.success(function (values) {
$scope.values= values;
})
答案 0 :(得分:3)
试试ng-options="key as value for (key, value) in values"
。我认为问题是你试图同时使用对象的键和值,同时试图引用.Key
&amp; .Value
,实际上并不存在。
如果您想以原始方式ng-options
进行操作,则返回的对象应如下所示:
var result = [
{ Key: 'test1', Value: 'test1Value' },
{ Key: 'test2', Value: 'test2Value' }
]
要像这样从WebAPI返回对象,该方法应如下所示:
[HttpGet]
public List<KeyValuePair<string, string>> Get()
{
return new Dictionary<string, string>(){
{ "test1", "test 1"},
{ "test2", "test 2"}
}.ToList<KeyValuePair<string, string>>();
}