1

我有一个控制器,用于将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 : 易货岛

SiteID: 2, SiteName: Cape Lisburne

....12 次以上。

4

2 回答 2

3

List<T>使用集合初始化器创建ViewModel的数组(或):

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);
}
于 2012-07-30T18:45:50.523 回答
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呢?我建议您尽可能避免这种情况。如果您担心每次都查询数据库,您可以考虑将数据存储在中间缓存层中并从中获取数据,从而避免调用数据库。三思而后行。

于 2012-07-30T18:46:03.937 回答