IEnumerator와 동일한 IQueryable은 GetEnumerator 메서드를 포함하고 있지만 부분 뷰 IQueryable 개체에 전달할 때 Razor는 GetEnumerator에 대한 정의가 없다고 말했습니다.면도기. GetEnumerator에 대한 공용 정의가 포함되어 있지 않기 때문에 @foreach 문을 사용할 수 없습니다.
다음public interface IComments : IDisposable
{
IQueryable<comments> GetPostComments(int postid);
//void Add(comments comment);
//void Update(comments comment);
//void Remove(int id);
}
이 저장소입니다 : 여기 인터페이스 정의입니다
public class CommentsRepository: IComments, IDisposable
{
private blogaspnetEntities db;
public CommentsRepository(blogaspnetEntities db)
{
this.db = db;
}
public IQueryable<comments> GetPostComments(int postid)
{
var all = from a in db.comments
orderby a.Posted descending
where a.PostID == postid
select a;
return all;
}
private bool disposed = false;
protected virtual void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
db.Dispose();
}
}
this.disposed = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}
그리고 마지막 부분이다 :
@model BlogAspNetMVC.Models.comments
<div class="row">
@foreach (var item in Model)
{
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">@item.Author " сказал " @item.Posted ":"</h3>
</div>
<div class="panel-body">
@Html.Raw(HttpUtility.HtmlDecode(@item.Comment))
</div>
</div>
</div>
}
</div>
내가 너 때문에 같은 잘못 것을 얻을 수 없습니다 정말이야 이 모든 것이 IQuerybale이라는 것을 알 수 있습니다. 오후 8시 30 분 P.S. 여기 모델이 있습니다 :
public partial class comments
{
public int ID { get; set; }
public string Comment { get; set; }
public Nullable<int> Author { get; set; }
public Nullable<System.DateTime> Posted { get; set; }
public Nullable<int> PostID { get; set; }
public virtual blog_post blog_post { get; set; }
}
P.P. 부모 ViewModel :
<div class="col-md-12">
@Html.Partial("~/Views/comments/Details.cshtml", new BlogAspNetMVC.Models.comments())
</div>
모델이'IComments' 인 경우 * IQueryable이 아니며 IQueryable을가집니다. –
알 겠어. 어떻게 모델을 바꿔야 하나? –
샘플에 관련없는 많은 코드가 표시되지만 문제의 유형 ('BlogAspNetMVC.Models.comments')은 표시되지 않습니다. 이 유형의 인스턴스를 반복 할 때 IEnumerable (또는 적어도'GetEnumerator')을 구현해야합니다. 반복 할 컬렉션과 같은 객체를 찾는 것은 사용자의 몫입니다. –