2011-04-17 68 views
0

我正在研究ASP.NET MVC,並且我有一個View在HttpPost操作中檢索哪些表單數據。當HttpPost操作被調用時它工作正常。我使用表單數據查詢數據庫,並將數據庫的結果綁定到TELERIK Grid控件。它顯示數據正常,但分頁不起作用。Telerik Grid數據綁定來調用HttpPost方法

問題是,當我嘗試切換到另一個頁面時,它調用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); 
    } 
+0

你可以發佈視圖中的網格代碼以及控制器中的操作方法嗎?因此,我會盡力幫助你。 – 2011-04-18 11:12:40

+0

謝謝。我已經插入了代碼,希望它能幫助你獲得一些見解。如果有什麼不清楚的地方,請問我任何問題。 – 2011-04-18 14:49:40

回答

0

首先你的控制器的方法需要GridAction屬性。其次它必須使用GridModel類型作爲模型。這是ajax綁定所必需的。您可以檢查ajax binding help article以及ajax binding online demo,其中顯示了所需的步驟。很可能你應該爲ajax綁定定義一個單獨的操作方法。

最後,似乎網格的JavaScript沒有啓動 - 它正在發出HTTP GET請求的事實表明這一點。檢查是否在網格後面聲明瞭ScriptRegistrar組件。