2

我试图初始化我的剑道 ui 网格。我可以使用 View 对象填充它,但是当我尝试以 Json 格式(即移动到下一页时)时,我得到一个显示 json 结果而不是我的视图的屏幕。

这是控制器代码:

 public class CampaignsController : Controller
    {
        //
        // GET: /Campaigns/


        [HttpGet]
        public ActionResult Index()
        {
            return View(GetAllCampaigns());
        }


        public ActionResult Campaigns_Read([DataSourceRequest] DataSourceRequest request)
        {
           DataSourceResult result = GetAllCampaigns().ToDataSourceResult(request);
           return Json(result, JsonRequestBehavior.AllowGet);        
        }


        private static IEnumerable<NH_Campaign> GetAllCampaigns()
        {
            List<NH_Campaign> result = null;
            if (MBPDataAccess.Instance.GetAll(out result))
            {
                return result;
            }
            return new List<NH_Campaign>();
        }

而cshtml是:

@model IEnumerable<MBP.NH_Campaign>

<h2>View1</h2>


@(Html.Kendo().Grid(Model)
      .Name("CGrid")
      .Columns(columns =>
          {
              columns.Bound(p => p.CampaignID).Title("Id");
              columns.Bound(p => p.CampaignName).Title("Name");
              columns.Bound(p => p.ClickUrlC2C_OFF).Title("Click URL");
              columns.Bound(p => p.PlatformID).Title("Platform ID");
          })
      //.Groupable()
      .Pageable()
      //.Sortable()
      //.Filterable()
      .DataSource(dataSource => dataSource.Ajax().PageSize(2).Read(read => read.Action("Campaigns_Read", "Campaigns"))
      ));

加载页面时调用的Index操作效果很好,但是当我尝试移至下一页时Camapigns_Read调用了该操作,但我得到了一个带有 json 结果的空白页面。我在这里想念什么?

编辑:我想在服务器端执行分页

4

1 回答 1

3

知道了 ,

问题是必须首先初始化视图,使用相同的控制器名称-该死的命名约定:),我的解决方案是

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

        [HttpPost]    
        public ActionResult Index([DataSourceRequest] DataSourceRequest request)
        {
           DataSourceResult result = GetAllCampaigns().ToDataSourceResult(request);
           return Json(result, JsonRequestBehavior.AllowGet);        
        }
于 2013-04-23T12:52:57.690 回答