我可以使用Web ApiController来获取Html.DropDownList的SelectList吗?

时间:2013-12-31 11:11:45

标签: c# .net asp.net-mvc asp.net-mvc-4 asp.net-web-api

也许我错过了这一点,但我想从Web API控制器中检索MVC视图中的下拉列表的一些数据。

我想简单地构建这样的东西:

API控制器:

public class Foo
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class ListController : ApiController
{
    public IEnumerable<Foo> GetFoos()
    {
        return new List<Foo>( new[]
            {
                new Foo()
                {
                    Id = 1,
                    Name = "Foo 1"
                },
                new Foo()
                {
                    Id = 3,
                    Name = "Foo 3"
                }
            });
    }
}

所以,在我看来,我试图使用这样的Html扩展帮助:

@Html.DropDownList("FooId", new SelectList(Html.Action("GetFoos","api/List")))
很明显,这给了我错误:

  

'System.Web.Mvc.SelectList.SelectList(System.Collections.IEnumerable)'的最佳重载方法匹配有一些无效的参数

但我似乎找不到合适的方法来做到这一点。

有可能吗?或者我需要使用JQuery进行AJAX调用吗?

(ps。我知道处理服务器调用视图时的性能影响。它现在会让我的生活变得更轻松)

提前致谢。

1 个答案:

答案 0 :(得分:1)

@Html.DropDownList旨在与ViewModel一起使用,它不会检索服务请求。为此,您必须通过ajax请求从客户端调用您的服务,是的。

通常,您只需将模型传递给视图并在服务器端构建下拉列表。