2014-03-27 26 views
1

我正在使用nopCommerce。我已經使用telerik-grid綁定表中的數據併成功綁定數據。我爲編輯操作創建了名爲「EditContact」的方法。但當我點擊編輯鏈接重定向頁面名爲「_CreateOrUpdateContact.cshtml」,我得到了「頁面找不到」頁面。NopCommerce - 與Telerik-Grid的頁面導航問題

Telerik的網格代碼:

@(Html.Telerik().Grid<AddressModel>() 
       .Name("vendors-grid") 
       .Columns(columns => 
       { 
        columns.Bound(x => x.CountryName) 
         .Width(200).Centered(); 
        columns.Bound(x => x.FirstName) 
         .Width(200).Centered(); 
        columns.Bound(x => x.LastName) 
         .Width(200).Centered(); 
        columns.Bound(x => x.Title) 
         .Width(200).Centered(); 
        columns.Bound(x => x.Email) 
         .Width(200).Centered(); 
        columns.Bound(x => x.PhoneNumber) 
         .Width(200).Centered(); 
        columns.Bound(x => x.Address1) 
        .Width(200).Centered(); 
        columns.Bound(x => x.Id) 
         .Width(200) 
         .Centered() 
         .Template(x => Html.ActionLink(T("Admin.Common.Edit").Text, "Edit", new { id = x.Id })) 
         .ClientTemplate("<a href=\"EditContact/<#= Id #>\">" + T("Admin.Common.Edit").Text + "</a>") 
         .Title(T("Admin.Common.Edit").Text); 
        columns.Bound(x => x.Id) 
        .Template(x => Html.ActionLink(T("Admin.Common.Delete").Text, "Delete", new { id = x.Id })) 
        .ClientTemplate("<a href=\"Delete/<#= Id #>\">" + T("Admin.Common.Delete").Text + "</a>") 
        .Centered().Width(200) 
        .HeaderTemplate(T("Admin.Common.Delete").Text); 
       }) 
       .Pageable(settings => settings.PageSize(gridPageSize).Position(GridPagerPosition.Both)) 
       .DataBinding(dataBinding => dataBinding.Ajax().Select("ListContacts", "VendorDetails",new { vendorId = Model.Id })) 
       .EnableCustomBinding(true)) 

EditContact.cshtml代碼:

@model AddressModel 

@using (Html.BeginForm()) 
{ 
<div class="section-header"> 
    <div class="options"> 
     <input type="submit" name="save" class="t-button" value="@T("Admin.Common.Save")" /> 
     <input type="submit" name="save-continue" class="t-button" value="@T("Admin.Common.SaveContinue")" /> 
    </div> 
</div> 
@Html.Partial("_CreateOrUpdateContact", Model) 
} 
@Html.DeleteConfirmation("vendor-delete") 

VendorDetailsController方法:

[HttpPost, GridAction(EnableCustomBinding = true)] 
    public ActionResult ListContacts(int vendorId,GridCommand command) 
    { 
     if (!_permissionService.Authorize(StandardPermissionProvider.ManageVendors)) 
      return AccessDeniedView(); 

     var Addresses = _addressService.GetVendorAddresses(vendorId); 

     var gridModel = new GridModel<AddressModel> 
     { 
      Data = Addresses.Select(x => 
      { 
       var a = new AddressModel(); 
       PrepareAddressModel(a, x, false); 
       return a; 
      }), 
      Total = Addresses.Count, 
     }; 
     return new JsonResult 
     { 
      Data = gridModel 
     }; 
    } 

    // edit vendor contact 
    public ActionResult EditContact(int id) 
    { 
     if (!_permissionService.Authorize(StandardPermissionProvider.ManageVendors)) 
      return AccessDeniedView(); 

     var address = _addressService.GetAddressById(id); 
     int vendorId = _vendorContactService.GetVendorIdByAddressId(address.Id); 

     if (address == null) 
      //No Address found 
      return RedirectToAction("Edit", new { id = vendorId }); 

     var model = new AddressModel(); 
     model.VendorId = vendorId; 

     //Ordering Method 
     model.AvailableCountries.Add(new SelectListItem() { Text = "-- Select --", Value = "0" }); 
     foreach (var c in _countryService.GetAllCountries(true)) 
      model.AvailableCountries.Add(new SelectListItem() { Text = c.Name, Value = c.Id.ToString() }); 

     PrepareAddressModel(model, address, false); 
     return View(model); 
    } 

我做錯了什麼?
我如何重定向從telerik網格 - 編輯鏈接到_CreateOrUpdateContact.cshtml頁面?

+0

請發佈您的EditContact操作 –

回答

0

請檢查「_CreateOrUpdateContact.cshtml」是否與「EditContact.cshtml」位於同一位置。我會建議你調試代碼。在「public ActionResult EditContact(int id)」處放置一個斷點,然後在點擊來自網格的編輯鏈接後檢查是否點擊了調試點。如果沒有被擊中,那麼在路線上可能存在一些問題。

這將是更好,如果你能提供你發現

錯誤的屏幕截圖
0

,你可以在這裏查詢路線在Telerik的網格

columns.Bound(x => x.Id) 
     .Width(200) 
     .Centered() 
     .Template(x => Html.ActionLink(T("Admin.Common.Edit").Text, "Edit", new { id = x.Id })) 
     .ClientTemplate("<a href=\"EditContact/<#= Id #>\">" + T("Admin.Common.Edit").Text + "</a>") 
     .Title(T("Admin.Common.Edit").Text); 

,因爲我認爲的路線有問題我應該是這樣的

columns.Bound(x => x.Id) 
     .Width(200) 
     .Centered() 
     .Template(x => Html.ActionLink(T("Admin.Common.Edit").Text, "EditContact", new { id = x.Id })) 
     .ClientTemplate("<a href=\"EditContact/<#= Id #>\">" + T("Admin.Common.Edit").Text + "</a>") 
     .Title(T("Admin.Common.Edit").Text);