在PartialView

时间:2015-05-22 13:16:47

标签: asp.net-mvc kendo-ui kendo-grid partial-views kendo-asp.net-mvc

我在MVC应用程序的Index视图中有两个部分,我想向这些部分呈现两个PartialView。将kendogrid渲染到一个索引没有问题。但是,为了在KendoGrid上呈现数据,我可以使用在控制器中返回Json的两个方法,如下所示。你能举个例子来说明如何实现这个目标吗?

控制器:

public ActionResult Index()
{
    return View();
}

public ActionResult Issues_Read([DataSourceRequest]DataSourceRequest request)
{
    IQueryable<Issue> issues = db.Issues;
    DataSourceResult result = issues.ToDataSourceResult(request, c => new IssueViewModel 
    {
        ID = c.ID,
        ProjectID = c.ProjectID
    });

    return Json(result);
}


查看:

@(Html.Kendo().Grid<IssueViewModel>()
  .Name("grid")
  .Columns(columns =>
  {
      columns.Bound(c => c.ProjectID);
      columns.Command(command => { command.Edit(); command.Destroy(); }).Width(180);
  })
  .ColumnMenu()
  .Editable(editable => editable.Mode(GridEditMode.PopUp))
  .Pageable()
  .Navigatable()    
  .DataSource(dataSource => dataSource
      .Ajax()
      .Model(model => model.Id(p => p.ID))
      .Read(read => read.Action("Issues_Read", "Issue"))
      .Create(create => create.Action("Issues_Create", "Issue" ))
      .Update(update => update.Action("Issues_Update", "Issue"))
      .Destroy(destroy => destroy.Action("Issues_Destroy", "Issue"))
  )
)


提前谢谢。

1 个答案:

答案 0 :(得分:2)

为了多次使用相同的局部视图,网格ID应该是唯一的,因此在局部视图数据中传递ID是一种可能的解决方案。在你的情况下 部分视图第一次调用:

@Html.Partial("grid", new ViewDataDictionary { { "id", "grid1" }})

部分查看第二个电话:

@Html.Partial("grid", new ViewDataDictionary { { "id", "grid2" }})

部分视图内容:

@(Html.Kendo().Grid<IssueViewModel>()
  .Name(@ViewData["id"].ToString())
...