Asp.net mvc 剑道MVC网格中未显示数据

Asp.net mvc 剑道MVC网格中未显示数据,asp.net-mvc,kendo-ui,kendo-grid,kendo-asp.net-mvc,Asp.net Mvc,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,我使用了剑道网格来显示数据。看起来数据传递正确,因为当我在运行时跟踪代码时,我看到结果中有一些数据,但剑道网格无法显示数据。 我怎样才能解决这个问题 编辑说明: public class Tag : Entity, ITag { public Tag() { } public virtual string Title { get; set; } public virtual string Descriptio

我使用了剑道网格来显示数据。看起来数据传递正确,因为当我在运行时跟踪代码时,我看到结果中有一些数据,但剑道网格无法显示数据。 我怎样才能解决这个问题

编辑说明:

public class Tag : Entity, ITag
    {
        public Tag()
        {
        }
        public virtual string Title { get; set; }
        public virtual string Description { get; set; }
        public virtual bool? IsActive { get; set; }
        [Range(1, 4)]
        public virtual int Size { get; set; }

        public virtual ISet<ArticleTag> ArticleTags { get; set; }
        public virtual ISet<ProjectTag> ProjectTags { get; set; }
    }
我找到了问题的原因,但无法解决。 如果在QueryBuilder()方法中删除ViewModel中的这一行,

Tags=article.ArticleTags.Where(c=>c.ArticleId==article.Id).选择(b=>b.Tag).Distinct().ToList()

网格显示数据,但我需要标记的值。为什么这行代码会导致问题?

标签型号:

public class Tag : Entity, ITag
    {
        public Tag()
        {
        }
        public virtual string Title { get; set; }
        public virtual string Description { get; set; }
        public virtual bool? IsActive { get; set; }
        [Range(1, 4)]
        public virtual int Size { get; set; }

        public virtual ISet<ArticleTag> ArticleTags { get; set; }
        public virtual ISet<ProjectTag> ProjectTags { get; set; }
    }
公共类标记:实体,ITag
{
公共标签()
{
}
公共虚拟字符串标题{get;set;}
公共虚拟字符串描述{get;set;}
公共虚拟bool?IsActive{get;set;}
[射程(1,4)]
公共虚拟整数大小{get;set;}
公共虚拟ISet ArticleTags{get;set;}
公共虚拟ISet项目标记{get;set;}
}
我的网格:

@using Jahan.Blog.Web.Mvc.HtmlHelpers
@using Kendo.Mvc.UI
@using Kendo.Mvc.UI.Fluent
@model IEnumerable<Jahan.Blog.ViewModel.ArticleViewModel>
@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<div style="width: 100%;">
    @(Html.Kendo().Grid<Jahan.Blog.ViewModel.ArticleViewModel>()
          .Name("ArticleAdmin").Navigatable()
          .Resizable(c => c.Columns(true))
          .HtmlAttributes(new { @class = "cursorLink", @style = "width: 1000px;height:auto;overflow: scroll;" })
          .Columns(columns =>
          {
              columns.Bound(p => p.Id).Width(100);
              columns.Bound(p => p.Title).Width(200);
              columns.Command(command => command.Destroy()).Width(170);
          })
          .ToolBar(toolbar =>
          {
              toolbar.Create();
              toolbar.Save();
          })
          .Editable(editable => editable.Mode(GridEditMode.InCell))
          .Pageable()
          .Navigatable()
          .Sortable()
          .Scrollable()
          .DataSource(dataSource => dataSource
              .Ajax()
              .Batch(true)
              .PageSize(10)
              .ServerOperation(false)
              .Events(events => events.Error("error_handler"))
              .Model(model => model.Id(p => p.Id))
              .Create("Editing_Create", "ArticleAdmin")
              .Read("Editing_Read", "ArticleAdmin")
              .Update("Editing_Update", "ArticleAdmin")
              .Destroy("Editing_Destroy", "ArticleAdmin")
          ))
</div>
@使用Jahan.Blog.Web.Mvc.HtmlHelpers
@使用Kendo.Mvc.UI
@使用Kendo.Mvc.UI.Fluent
@模型IEnumerable
@{
ViewBag.Title=“Index”;
}
指数

@ActionLink(“新建”、“创建”)

@(Html.Kendo().Grid()) .Name(“ArticleAdmin”).Navigatable() .可调整大小(c=>c.Columns(true)) .HtmlAttributes(新的{@class=“cursorLink”,@style=“width:1000px;height:auto;overflow:scroll;”}) .列(列=> { columns.Bound(p=>p.Id).Width(100); columns.Bound(p=>p.Title).Width(200); Command(Command=>Command.Destroy()).Width(170); }) .ToolBar(ToolBar=> { toolbar.Create(); toolbar.Save(); }) .Editable(Editable=>Editable.Mode(GridEditMode.InCell)) .Pageable() .Navigatable() .Sortable() .Scrollable() .DataSource(DataSource=>DataSource .Ajax() .Batch(真) .页面大小(10) .ServerOperation(错误) .Events(Events=>Events.Error(“错误处理程序”)) .Model(Model=>Model.Id(p=>p.Id)) .Create(“编辑”、“创建”、“文章管理员”) .Read(“编辑”、“文章管理”) .Update(“编辑更新”、“文章管理员”) .Destroy(“编辑\销毁”,“文章管理员”) ))
在我的控制器中:

public ActionResult Index([DataSourceRequest] DataSourceRequest request)
        {
            List<ArticleViewModel> instance = new ArticleViewModel().FindByCriteria().ToList();
            return View(instance); // There are some data. instance.count = 2
        }

        public ActionResult Editing_Read([DataSourceRequest] DataSourceRequest request)
        {
            List<ArticleViewModel> instance = new ArticleViewModel().FindByCriteria().ToList();
            DataSourceResult dsRequest = instance.ToDataSourceResult(request); // There are some data.
            return Json(dsRequest, JsonRequestBehavior.AllowGet);
        }
公共操作结果索引([DataSourceRequest]DataSourceRequest请求)
{
列表实例=新建ArticleViewModel().FindByCriteria().ToList();
返回视图(实例);//有一些数据。instance.count=2
}
公共操作结果编辑\u读取([DataSourceRequest]DataSourceRequest请求)
{
列表实例=新建ArticleViewModel().FindByCriteria().ToList();
DataSourceResult dsRequest=instance.ToDataSourceResult(request);//有一些数据。
返回Json(dsRequest,JsonRequestBehavior.AllowGet);
}
我的ViewModel:

public class ArticleViewModel : IArticle, IDateTracking
    {
        public ArticleViewModel()
        {

        }
        public int? UserId { get; set; }

        public string Title { get; set; }

        public string Summary { get; set; }

        public string Description { get; set; }

        public decimal? RateCounter { get; set; }

        public int? LikeCounter { get; set; }

        public bool IsActive { get; set; }

        public bool IsActiveNewComment { get; set; }

        public IList<Comment> Comments { get; set; }

        public ISet<Rating> Ratings { get; set; }

        public IList<AttachmentFile> AttachmentFiles { get; set; }

        public ISet<ArticleTag> ArticleTags { get; set; }

        public ISet<ArticleLike> ArticleLikes { get; set; }

        public int Id { get; set; }

        public DateTime? CreatedDate { get; set; }

        public DateTime? ModifiedDate { get; set; }

        [UIHint("_TagsOfArticle")]
        public virtual IList<Tag> Tags { get; set; }
        public virtual int NumberOfComments { get; set; }
        public virtual User User { get; set; }

        private IQueryable<ArticleViewModel> QueryBuilder()
        {
            ArticleRepository repository = new ArticleRepository();
            IQueryable<ArticleViewModel> query = repository.FindAll().Select(article => new ArticleViewModel
            {
                Id = article.Id,
                AttachmentFiles = article.AttachmentFiles.Where(a => a.ArticleId == article.Id).Distinct().ToList(),
                Comments = article.Comments.Where(c => c.ArticleId == article.Id).ToList(),
                CreatedDate = article.CreatedDate,
                //Description = article.Description,
                IsActive = article.IsActive,
                IsActiveNewComment = article.IsActiveNewComment,
                LikeCounter = article.LikeCounter,
                ModifiedDate = article.ModifiedDate,
                NumberOfComments = article.Comments.Count(c => c.ArticleId == article.Id),
                RateCounter = article.RateCounter,
                //Summary = article.Summary,
                Tags = article.ArticleTags.Where(c => c.ArticleId == article.Id).Select(b => b.Tag).Distinct().ToList(),
                Title = article.Title,
                UserId = article.UserId
            });
            return query;
        }

        public virtual IQueryable<ArticleViewModel> QueryBuilderByCriteria(Expression<Func<ArticleViewModel, bool>> predicate = null, params Expression<Func<ArticleViewModel, object>>[] includeProperties)
        {
            IQueryable<ArticleViewModel> items = QueryBuilder();
            if (includeProperties != null)
            {
                foreach (Expression<Func<ArticleViewModel, object>> includeProperty in includeProperties)
                {
                    items = items.Include(includeProperty);
                }
            }
            if (predicate != null)
                return items.Where(predicate);
            return items;
        }

        public virtual IEnumerable<ArticleViewModel> FindByCriteria(Expression<Func<ArticleViewModel, bool>> predicate = null, params Expression<Func<ArticleViewModel, object>>[] includeProperties)
        {
            List<ArticleViewModel> result = QueryBuilderByCriteria(predicate, includeProperties).ToList();
            return result;
        }

        public virtual ArticleViewModel FindByArticleId(int articleId)
        {
            ArticleViewModel result = QueryBuilder().FirstOrDefault(a => a.Id == articleId);
            return result;
        }
    }
    public List<TagGridViewModel> Tags { get; set; }
公共类ArticleViewModel:IArticle,IdAtracking
{
public ArticleViewModel()
{
}
public int?UserId{get;set;}
公共字符串标题{get;set;}
公共字符串摘要{get;set;}
公共字符串说明{get;set;}
公共十进制?速率计数器{get;set;}
公共int?像计数器{get;set;}
公共bool IsActive{get;set;}
公共bool IsActiveNewComment{get;set;}
公共IList注释{get;set;}
公共ISet评级{get;set;}
公共IList附件文件{get;set;}
公共ISet ArticleTags{get;set;}
公共ISet{get;set;}
公共int Id{get;set;}
公共日期时间?CreatedDate{get;set;}
公共日期时间?修改日期{get;set;}
[UIHint(“\u tagsofacts”)]
公共虚拟IList标记{get;set;}
公共虚拟整数注释{get;set;}
公共虚拟用户用户{get;set;}
私有iQueryBuilder()
{
ArticleRepository=新建ArticleRepository();
IQueryable query=repository.FindAll().Select(article=>newarticleViewModel
{
Id=article.Id,
AttachmentFiles=article.AttachmentFiles.Where(a=>a.ArticleId==article.Id).Distinct().ToList(),
Comments=article.Comments.Where(c=>c.ArticleId==article.Id).ToList(),
CreatedDate=article.CreatedDate,
//描述=文章。描述,
IsActive=article.IsActive,
IsActive-Comment=article.IsActive-Comment,
LikeCounter=article.LikeCounter,
ModifiedDate=article.ModifiedDate,
NumberOfComments=article.Comments.Count(c=>c.ArticleId==article.Id),
RateCounter=article.RateCounter,
//摘要=文章摘要,
Tags=article.ArticleTags.Where(c=>c.ArticleId==article.Id).选择(b=>b.Tag).Distinct().ToList(),
标题=文章。标题,
UserId=article.UserId
});
返回查询;
}
公共虚拟IQueryable QueryBuilderByCriteria(表达式谓词=null,参数表达式[]includeProperties)
{
IQueryable items=QueryBuilder();
if(includeProperties!=null)
{
foreach(includeProperty中的表达式includeProperty)
{
项目=项目。包括(includeProperty);
}
}
public virtual IEnumerable<ArticleViewModel> FindByCriteria(Expression<Func<ArticleViewModel, bool>> predicate = null, params Expression<Func<ArticleViewModel, object>>[] includeProperties)
        {
            List<ArticleViewModel> result = new List<ArticleViewModel>();
            var query = QueryBuilderByCriteria(predicate, includeProperties);
            foreach (var articleViewModel in query)
            {
                articleViewModel.Tags = TagGridViewModel.GetByArticleId(articleViewModel.Id); 
                articleViewModel.Owner = AppUserStore.Instance.FindByIdAsync(int.Parse(articleViewModel.UserId.ToString())).Result.UserName;
                result.Add(articleViewModel);
            }
            return result;
        }