ViewModel和Interface无法获取数据

时间:2013-02-18 14:16:38

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

我很难尝试解决这个问题,如何创建一个带界面的viewmodel,

我一直试图在网上跟几个例子,

http://www.rachelappel.com/use-viewmodels-to-manage-data-amp-organize-code-in-asp.net-mvc-applications

http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx

但是我无法让它工作,任何帮助都会受到赞赏,我的代码到目前为止。

public class TravelGuideViewModel
    {
    private readonly IGetCountryDetails _IGCD;
    public DisplayCountryDetails displayCountryDetails { get; set; }

    public TravelGuideViewModel(IGetCountryDetails IGCD)
        {
        _IGCD       = IGCD;
        }
    //Trying to get DisplayCountryDetails here, but everything i try does not work
    }

======================更新===============

public class TravelGuideViewModel
    {
    private readonly IGetCountryDetails _IGCD;
    public DisplayCountryDetails displayCountryDetails { get; set; }

    public TravelGuideViewModel(IGetCountryDetails IGCD)
        {
        _IGCD       = IGCD;
        }
    public TravelGuideViewModel Asia()
        {
        var countries = _IGCD.DisplayCountriesOfTheWorldDetails()
            .Where(a => a.strCountryContinent == "Asia").FirstOrDefault();

        return countries.strCountry.AsEnumerable(); << Does not work
        }
    }

1 个答案:

答案 0 :(得分:0)

你的.AsEnumerable()不起作用的原因是因为函数的返回类型是TravelGuideViewModel而不是Enumerable。

尝试类似......

public TravelGuideViewModel Asia()
{
  var countries = _IGCD.DisplayCountriesOfTheWorldDetails()
       .Where(a =>a.strCountryContinent == "Asia).FirstOrDefault();
      return new TravelGuideViewModel(countries);
}

为了使View可以访问某些内容,ViewModel必须包含指向它的指针。可以将ViewModel视为您的View尝试饮用的杯子。不是饮料本身。很方便,但如果你不填充某些东西,那就不好了。