如何使用静态数据填充视图模型

时间:2012-07-30 18:41:40

标签: c# asp.net-mvc json

我有一个控制器,用于将JSON数据列表传递给我的视图。目前我正在使用Linq to Entities来填充Viewmodel,但由于它只是15对的静态列表,我想对Viewmodel进行硬编码,但我不知道该怎么做。这是我的控制器

public JsonResult GetSites()
    {
        var sites = context.vAaiomsSites.Select(s => new vAaiomsSitesVM
        {
            ID = s.ID,
            SiteName = s.SiteName
        }).OrderBy(s => s.SiteName);

        return Json(sites, JsonRequestBehavior.AllowGet);
    }

我只需要一个这样的数组:

SiteID:1,SiteName:Barter Island

SiteID:2,SiteName:Cape Lisburne

....再多12次。

2 个答案:

答案 0 :(得分:2)

使用集合初始值设定项创建ViewModel的数组(或List<T>):

public JsonResult GetSites()
{
    var sitesArray = new vAaiomsSitesVM[]
        {
            new vAaiomsSitesVM
            {
                ID = 1,
                SiteName = "Barter Island"
            },

            new vAaiomsSitesVM
            {
                ID = 2,
                SiteName = "Cape Lisburne"
            }

            // And so on...
        };

    var sites = sitesArray.OrderBy(s => s.SiteName);
    return Json(sites, JsonRequestBehavior.AllowGet);
}

答案 1 :(得分:2)

如果你真的想对它进行硬编码,你可以这样做。

为ViewModel创建一个类

public class Site
{
  public int SiteID { set;get;}
  public string SiteName { set;get;}
}

并在你的Action方法中

public JsonResult GetSites()
{
   var list=new List<Site>();
   list.Add(new Site{ SiteID=1, SiteName="SiteName 1" } );
   list.Add(new Site{ SiteID=2, SiteName="SiteName 2" } );
   //13 more times !!!!
  return Json(list, JsonRequestBehavior.AllowGet);  
}

为什么要对其进行HardCode?我建议您尽可能避免使用它。如果您担心每次查询数据库,您可能会考虑将数据存储在中间缓存中从那里分层并获取它,从而避免调用数据库。三思而后行。