Web API返回选择框的键值列表

时间:2014-02-19 23:52:59

标签: angularjs asp.net-web-api

我想要一个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;
        })

1 个答案:

答案 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>>();
    }