確かにクエリを実行する必要があります:
ViewData["RegionBoudaries"] = regionBoudaries.ToList();
しかし、私が見ることができるのは、匿名オブジェクトを使用しているため、ビューでアクセスするのが難しくなります。したがって、モデルを定義することをお勧めします。
public class RegionViewModel
{
public double Latitude { get; set; }
public double Longitude { get; set; }
public int RegionID { get; set; }
}
次に、クエリを調整します。
var context = new DataClassesContext();
var regionBoudaries =
from boundaryDetails in context.RegionBoundaries
join boundaryID in context.Region_Boundaries on boundaryDetails.RegionBoundaryID equals boundaryID.BoundaryID
select new RegionViewModel
{
Latitude = boundaryDetails.lat,
Longitude = boundaryDetails.@long,
RegionID = boundaryID.RegionID
};
コードを改善するための次のステップは、もちろん、このがらくたを取り除き、ViewData
定義したビュー モデルとビューの強い型付けを最大限に活用することです。
public ActionResult Index()
{
using (var context = new DataClassesContext())
{
var regionBoudaries =
from boundaryDetails in context.RegionBoundaries
join boundaryID in context.Region_Boundaries on boundaryDetails.RegionBoundaryID equals boundaryID.BoundaryID
select new RegionViewModel
{
Latitude = boundaryDetails.lat,
Longitude = boundaryDetails.@long,
RegionID = boundaryID.RegionID
};
return View(regionBoudaries.ToList());
}
}
これで、ビューはビュー モデルに強く型付けされます。
<%@ Page
Language="C#"
Inherits="System.Web.Mvc.ViewPage<IEnumerable<RegionViewModel>>"
%>
これで、強力なタイピングと Intellisense が得られます。
<% foreach (var region in Model) { %>
<div>
Lat: <%: region.Latitude %>, Lon: <%: region.Longitude %>
</div>
<% } %>