Asp.net mvc 4 SQL查询在视图中显示,而不是其结果

Asp.net mvc 4 SQL查询在视图中显示,而不是其结果,asp.net-mvc-4,Asp.net Mvc 4,在HomeController.cs中,我有以下代码片段 public ActionResult Index() { var context = new DataClassesContext(); var regionBoudaries = from boundaryDetails in context.RegionBoundaries join boundaryID in context.

在HomeController.cs中,我有以下代码片段

   public ActionResult Index()
    {
        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 { boundaryDetails.lat, boundaryDetails.@long, boundaryID.RegionID };
        ViewData["RegionBoudaries"] = regionBoudaries;
        return View();
    }
在我写的视图文件中

 <%= ViewData["RegionBoudaries"] %>


我将整个LINQ查询翻译成SQL语言,而不是查询结果。你能帮我得到查询结果吗?谢谢

确定需要执行查询:

 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>>" 
%>

现在,您获得了强大的打字和智能感知:

<% foreach (var region in Model) { %>
    <div>
        Lat: <%: region.Latitude %>, Lon: <%: region.Longitude %>
    </div>
<% } %>

纬度:,经度:

确定需要执行查询:

 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>>" 
%>

现在,您获得了强大的打字和智能感知:

<% foreach (var region in Model) { %>
    <div>
        Lat: <%: region.Latitude %>, Lon: <%: region.Longitude %>
    </div>
<% } %>

纬度:,经度:

谢谢,上次我尝试选择new RegionViewModel{boundaryDetails.lat,boundaryDetails.@long,boundaryID.RegionID}我必须解决一些关于
IEnumerable
的问题,我对此一无所知,所以我切换到了匿名对象。我知道你的解决方案非常简洁,所以为什么人们发明了
selectnewregionviewmodel{boundaryDetails.lat,boundarydails.@long,boundaryID.RegionID}那么他们必须处理IEnumerable?谢谢你,上次我尝试
选择new RegionViewModel{boundaryDetails.lat,boundaryDetails.@long,boundaryID.RegionID}
我必须解决一些关于
IEnumerable
的问题,我对此一无所知,所以我切换到了匿名对象。我知道你的解决方案非常简洁,所以为什么人们发明了
selectnewregionviewmodel{boundaryDetails.lat,boundarydails.@long,boundaryID.RegionID}那么他们必须处理IEnumerable?