【问题标题】:Telerik Grid databinding to call HttpPost methodTelerik Grid 数据绑定调用 HttpPost 方法
【发布时间】:2011-04-17 20:07:11
【问题描述】:

我正在研究 ASP.NET MVC,并且我有一个关于在 HttpPost 操作中检索到哪些表单数据的视图。调用 HttpPost 操作时它工作正常。我使用表单数据来查询数据库,并将数据库的结果绑定到 TELERIK Grid 控件。它显示数据正常,但分页不起作用。

问题是当我尝试切换到另一个页面时,它调用的是 HTTPGET 操作方法而不是 HttpPost 操作方法,因此没有从数据库中检索到数据。

感谢任何帮助。

这是视图和控制器的代码:

//-------------View------------------------------------

@(Html.Telerik().Grid(Model)
            .Name("Grid")
            .Columns(columns =>
            {
                columns.Bound(o => o.DealerName);
                columns.Bound(o => o.DealerNumber);
                columns.Bound(o => o.ServiceDealerNumber);
                columns.Bound(o => o.CMDealerNumber);
                columns.Bound(o => o.PurchaseDealerNumber);
                columns.Bound(o => o.Address);
                columns.Bound(o => o.City);
                columns.Bound(o => o.State);
                columns.Bound(o => o.Zip);
            })
            .DataBinding(dataBinding =>
            {
                dataBinding.Server().Select("DealerProfile", "DealerManagement", new { testVal = "test" }).Enabled(true);
                dataBinding.Ajax().Select("DealerProfile", "DealerManagement", new { testVal = "test" } ).Enabled(true);
            })
            .Scrollable(scrolling => scrolling.Enabled(true))
            .Sortable(sorting => sorting.Enabled(true))
            .Pageable(paging =>
                paging.PageSize(20)
                      .Style(GridPagerStyles.NextPreviousAndNumeric)
                      .Position(GridPagerPosition.Bottom)
            )
            .Filterable(filtering => filtering.Enabled(true))
            .Groupable(grouping => grouping.Enabled(true))
            .Footer(true)
            )

//---------------Controller Actions---------------------------------------
//
    // GET: /DealerManagement/DealerProfile/
    public ActionResult DealerProfile()
    {
        return View();
    }

    //
    // POST: /DealerManagement/DealerProfile/
    [HttpPost]
    public ActionResult DealerProfile(FormCollection formValues)
    {
        string dealerNumber = Request.Form["DealerNumber"];
        string dealerName = Request.Form["DealerName"];
        DealerProfilesViewModel dealerProfilesViewModel = new         DealerProfilesViewModel();
        dealerProfilesViewModel.DealerProfiles = new List<DealerProfileViewModel>();

        if (!dealerNumber.Trim().Equals(string.Empty))
        {
            DealerInfoCollection dealers = _iDealerProfileService.GetDealerInfoFromDealerNumber(dealerNumber);

            foreach (var item in dealers)
            {
                DealerProfileViewModel dealerProfileViewModel = new DealerProfileViewModel();

                dealerProfileViewModel.DealerName = item.Dealer_Name;
                dealerProfileViewModel.DealerNumber = item.Dealer_No;
                dealerProfileViewModel.ServiceDealerNumber = item.Service_Dealer_No;
                dealerProfileViewModel.CMDealerNumber = item.CM_Dealer_No;
                dealerProfileViewModel.PurchaseDealerNumber = item.PUR_Dealer_No;
                dealerProfileViewModel.Address = item.Address;
                dealerProfileViewModel.City = item.City;
                dealerProfileViewModel.State = item.State;
                dealerProfileViewModel.Zip = item.Zip;

                dealerProfilesViewModel.DealerProfiles.Add(dealerProfileViewModel);
            }
        }
        else if (!dealerName.Trim().Equals(string.Empty))
        {
                DealerInfoCollection dealers = _iDealerProfileService.GetDealerInfoFromDealerName(dealerName);

                foreach (var item in dealers)
                {
                    DealerProfileViewModel dealerProfileViewModel = new DealerProfileViewModel();

                    dealerProfileViewModel.DealerName = item.Dealer_Name;
                    dealerProfileViewModel.DealerNumber = item.Dealer_No;
                    dealerProfileViewModel.ServiceDealerNumber = item.Service_Dealer_No;
                    dealerProfileViewModel.CMDealerNumber = item.CM_Dealer_No;
                    dealerProfileViewModel.PurchaseDealerNumber = item.PUR_Dealer_No;
                    dealerProfileViewModel.Address = item.Address;
                    dealerProfileViewModel.City = item.City;
                    dealerProfileViewModel.State = item.State;
                    dealerProfileViewModel.Zip = item.Zip;

                    dealerProfilesViewModel.DealerProfiles.Add(dealerProfileViewModel);
                }
        }

        if (!String.IsNullOrEmpty(dealerName) && !String.IsNullOrEmpty(dealerNumber))
        {
            dealerProfilesViewModel = null;
        }

        return View(dealerProfilesViewModel.DealerProfiles);
    }

【问题讨论】:

  • 你能从视图中发布网格代码以及控制器中的操作方法吗?因此,我会尽力帮助您。
  • 谢谢。我已经插入了代码,希望它可以帮助您获得一些见解。如果有任何不清楚的地方,请随时问我。

标签: asp.net-mvc telerik telerik-grid


【解决方案1】:

首先,您的控制器方法需要 GridAction 属性。其次,它必须使用 GridModel 类型作为模型。这是 ajax 绑定所必需的。您可以查看ajax binding help articleajax binding online demo,它们显示了所需的步骤。很可能您应该为 ajax 绑定定义一个单独的操作方法。

最后,网格的 JavaScript 似乎没有启动——它发出 HTTP GET 请求的事实表明了这一点。检查是否有在网格之后声明的 ScriptRegistrar 组件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 2019-07-11
    • 1970-01-01
    相关资源
    最近更新 更多