안녕 모두 나는 사용자가 게시물을 제출하고 내가 오름차순으로 목록에 ORDERBY 사용하려고 수있는 응용 프로그램을 구축하고 있지만이 오류를 얻을ORDERBY 오름차순
오류
사전에 전달 된 모델 항목의 형식은 'System.Linq.OrderedEnumerable'2 [myproject.Models.NewsPostVM, System.Nullable'1 [System.Int32]] '이지만이 사전에는 모델 항목이 필요합니다 'System.Collections.Generic.List'1 [myproject.Models.NewsPostVM]'형식의. 컨트롤러
public ActionResult News()
{
var posts = db.NewsPosts.Select(d => new NewsPostVM()
{
ID = d.ID,
Heading = d.Heading,
Body = d.Body,
Images = d.Images.Select(i => new NewsImageVM()
{
Path = i.Path,
FileName = i.DisplayName
}).ToList()
}).ToList();
var post= posts.OrderBy(m => m.ID);
return View(post);
}
보기
당신은 그것을 할당하기 전에 모델 데이터에ToList
전화를해야
@model List<MyProject.Models.NewsPostVM>
@foreach (var p in Model)
{
<div class="w3-container w3-center">
<h5><b>@p.Heading</b></h5>
<p>@p.Body</p>
@foreach (var image in p.Images)
{
<img class="img-thumbnail" width="150" height="150" src="~/Images/@image.Path" />
}
<h6>@p.Date</h6>
</div>
}
어느 쪽이 받아들이 모델 정의를 변경 :
당신은 같이 당신의 변수 유형을 지정하여이 예기치 않은 동작을 방지 할 수 있습니다 결과를 강제로
사용 'ToList은'목록이 될 수 있습니다 IEnumerable'@model IEnumerable'또는'ToList()'를 추가하여 _controller_에서 다음과 같이 목록을 반환 할 수 있습니다 :'var post = posts.OrderBy (m => m.ID) .ToList(); ' –
'var posts = db.NewsPosts.OrderByx => x.ID)를 사용하십시오 .Select (d => new NewsPostVM() {...}). ToList();' 'var post = posts.OrderBy (m => m.ID); '를 삭제하십시오 - 응답이 더 효율적입니다 (그러나'var'을 사용하지 않으면 명백 할 것입니다). –