Telerik的MVC网格 - 通过值到新的控制器动作

问题描述:

使用了ASP.NET MVC Telerik的扩展,我创建了以下电网:Telerik的MVC网格 - 通过值到新的控制器动作

Telerik MVC Grid

..和我能提取我的订单价值当用户选择分组顺序中的任何项目时,使用客户端事件“OnRowSelect”进行编号。然后,我可以尽可能在警报中显示选定的值,但我真正想要做的是将该值传回给不同的控制器操作。这可能使用JavaScript?

当我尝试服务器端控件时,我最终在每个详细信息行旁边都出现了按钮,这不过是效果/期望的效果。

事实证明还有一个更简单的方法通过简单地改变了window.location如下才能到新的页面:

var yourUrl = '@Url.Action("Action", "Controller")'; 
var orderID; 
function onRowSelected(e) {  
    var ordersrid = $('#IncompleteOrders').data('tGrid');   
    orderID = e.row.cells[1].innerHTML;   
    window.location = yourUrl + "?orderId=" + orderID; 
} 

感谢那些谁回答;然而,丹尼尔在Telerik提供的上述答案更多的是我正在寻找的东西。

您可以轻松地在该事件中进行ajax调用。 类型的两部分过程(假设您的事件处理程序驻留在单独的.js文件中 - 否则您可以直接在.ajax调用中定义一个url)。 定义你需要发布到URL - 在$(文件)。就绪(...) ,如:

<script type="text/javascript">   
$(document).ready(function() {  
    var yourUrl = '@Url.Action("Action", "Controller")';   
}); 

然后将其放置在您的OnRowSelect事件处理程序是这样的:

function onRowSelect(e) { 
    var row = e.row;   
    var orderId = e.row.cells[0].innerHTML; 
    $.ajax(
    { 
     type: "POST", 
     url: yourUrl, 
     data: {id: orderId}, 
     success: function (result) { 
      //do something 
     }, 
     error: function (req, status, error) { 
      //dosomething 
     } 
    });   
} 

这应该做到这一点。

+0

我认为你需要将'accept'属性添加到$ .ajax调用中。 “接受:application/json”。这将让MVC知道你在有效载荷中发送了一些json格式的数据。 – 2012-08-02 17:00:12

+0

我认为这应该在'Content-Type'头部发送。 'Accpet'用于返回数据的类型。 – 2012-08-02 17:02:08