2011-05-17 89 views
1

A擁有帶Telerik MVC網格的剃鬚刀視圖。第一列有刪除記錄的鏈接。該鏈接是一個Ajax動作鏈接。Ajax操作鏈接在Telerik MVC Grid內時表現異常

@(
Html.Telerik().Grid<QMS.Models.CustomerTableRow>(Model) 
     .Name("CustomerTable") 
     .Columns(c => 
     { 
      c.Template(
       @<text> 
       @Ajax.ActionLink("Delete","Delete", new { key = item.CustomerKey },new AjaxOptions{ Confirm="Delete this Customer?",UpdateTargetId = "CustomerTable", HttpMethod = "Delete"}) 
       </text> 
       ); 
      c.Bound(col => col.FirstName); 
      c.Bound(col => col.LastName); 
      c.Bound(col => col.Email); 
      c.Bound(col => col.HomePhone); 
     }) 
     .Pageable() 
     .Sortable() 
     .Resizable(res => res.Columns(true)) 
     .Scrollable() 
     ) 

//Action Method in view 
//[HttpDelete] <-- can't have this or else a "Resource not found" error occurs 
     public ActionResult Delete(String key) 
     { 
       repo.DeleteCustomer(key); 
       return PartialView("CustomerTable", repo.GetCustomerTable()); 
     } 

當我點擊我在模板列中創建的「刪除」鏈接時,會發生一些奇怪的事情。首先,確認消息不會出現,但刪除操作仍然被調用。其次,即使我有HttpMethod =「刪除」,如果我用[HttpDelete]修飾操作方法,我會得到一個「找不到資源」的錯誤。最後,這個網格處於局部視圖,並且操作方法在刪除後返回partialview,但是所有格式都會丟失,就好像CSS文件不再存在一樣。如果鏈接在網格外呈現,則不會發生這種情況。我正在使用版本2011.1.315

回答

0

只是好奇,你使用jQuery 1.6.1(我相信這是最近在這個時候)或1.5.1 telerik提供的版本?

舉例來說,在我的應用我使用 @ Html.Telerik()。ScriptRegistrar()。jQuery的(假) 包括Telerik的需要,但不包括jQuery的腳本,這樣我可以包括它自己,並有控制使用哪個版本

無論您包含哪個版本,是否獲得相同的行爲?

我假設,因爲它在你有jquery.unobtrusive-ajax.min.js引用的網格外工作。

+0

該項目最近從MVC2轉換爲MVC3,我忘了添加jquery.unobtrusive腳本: - { – HitLikeAHammer 2011-05-23 15:22:32

1

我意識到這是很晚,但我有一個非常類似的問題,我終於想出了這個鏈接在搜索結果中出現。
我正試圖添加一個Ajax.Actionlink到MVC網格的客戶端模板。最後發現問題來自UpdateTargetID =「myElement」。 Ajax.ActionLink爲更新目標生成非轉義的「#」。
我的工作是圍繞:

columns.Bound(p => p.ID).Title("myTitle") 
          .ClientTemplate(Ajax.ActionLink("View", "myAction", "myController", new { myParam = "#=ID#" }, new AjaxOptions() { OnSuccess = "myJSFunction" }).ToHtmlString()); 


然後:

function myJSFunction(response) { 
    $("#updateTargetElement").html(response); 
} 


希望這可以幫助別人。