Asp.net mvc 4 SQL查询在视图中显示,而不是其结果
在HomeController.cs中,我有以下代码片段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.
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?