Telerik的MVC网格 - 通过值到新的控制器动作
问题描述:
使用了ASP.NET MVC Telerik的扩展,我创建了以下电网:Telerik的MVC网格 - 通过值到新的控制器动作
..和我能提取我的订单价值当用户选择分组顺序中的任何项目时,使用客户端事件“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
}
});
}
这应该做到这一点。
我认为你需要将'accept'属性添加到$ .ajax调用中。 “接受:application/json”。这将让MVC知道你在有效载荷中发送了一些json格式的数据。 – 2012-08-02 17:00:12
我认为这应该在'Content-Type'头部发送。 'Accpet'用于返回数据的类型。 – 2012-08-02 17:02:08