【问题标题】:Telerik MVC Grid - Pass Value to New Controller ActionTelerik MVC Grid - 将值传递给新的控制器动作
【发布时间】:2012-08-02 01:33:00
【问题描述】:

使用 Telerik Extensions for ASP.NET MVC,我创建了以下网格:

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

当我尝试使用服务器端控件时,我发现每个细节行旁边都有按钮,这并不是想要的效果/外观。

【问题讨论】:

    标签: javascript asp.net-mvc-3 controller return-value telerik-grid


    【解决方案1】:

    您可以轻松地在该事件中进行 ajax 调用。 一种两部分过程(假设您的事件处理程序驻留在单独的 .js 文件中 - 否则您可以直接在 .ajax 调用中定义一个 url)。 在 $(document).ready(...) 中定义您需要发布的 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
            }
        });        
    }
    

    应该可以的。

    【讨论】:

    • 我认为您需要在 $.ajax 调用中添加 'accept' 属性。 “接受:应用程序/json”。这会让 MVC 知道您在有效负载中向它发送了一些 json 格式的数据。
    • 我认为这应该在Content-Type 标头中发送。 Accpet 为返回数据的类型。
    【解决方案2】:

    事实证明,通过简单地更改 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 的 Daniel 提供的上述答案更符合我的要求。

    【讨论】:

      猜你喜欢
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多