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;
}