【问题标题】:How to pass an object from one view to another如何将对象从一个视图传递到另一个视图
【发布时间】:2014-03-14 03:48:43
【问题描述】:

您好,我必须将选择网格行的对象值传递给另一个视图。 我的代码cshtml代码是

var gview = $("#grdSearch").data("kendoGrid");

var selectedItem = gview.dataItem(gview.select());
if (selectedItem.address != undefined) {
    alert(selectedItem.address);
    window.location = '../PageSearch/Select?value:' + selectedItem;
}
else
    alert("NO Row Is SELECTED");

我的控制器代码是

[HttpGet]
    public JsonResult Select(Search value)
    {
        return Json(value, JsonRequestBehavior.AllowGet);
    }

问题是 jQuery 代码正在调用控制器操作,selectedItem 为空。 如何访问selectedItem内部的数据?

【问题讨论】:

  • 以及如何 gview.dataItem(gview.select());应该有什么价值??
  • 嗨,Rex,网格行将具有类型类 Select 的值。执行 if 条件意味着它已从网格中获取数据但无法将其传递给控制器​​。那么我在 window.location 的语法上做错了吗?
  • '../PageSearch/Select?value:' + selectedItem;不应该是 '../PageSearch/Select?value=' + selectedItem;

标签: jquery asp.net-mvc


【解决方案1】:

看起来您需要:window.location.href 如下所示:https://stackoverflow.com/a/1207465/599180

我认为 selectedItem 不会序列化为字符串,因此您可能需要JSON.stringify(selectedItem),如下所示:https://stackoverflow.com/a/21595823/599180

您必须确保 Select() 的参数类型与您关心的 selectedItem 序列化的字段匹配。

【讨论】:

    【解决方案2】:

    查询字符串中传递的数据需要采用?key1=val1&key2=val2&key3=val3的形式

    因此,要在查询字符串中传递对象属性值,您需要将 javascript 对象转换为此查询字符串格式,例如:

    '../PageSearch/Select?address=' + selectedItem.address + '&somethingElse=' + selectedItem.somethingElse`
    

    将数据发送到服务器的更简单方法是使用 jQuery POST:

    $.post( "../PageSearch/Select", selectedItem );
    

    https://api.jquery.com/jQuery.post/ 有更多关于 jQuery 帖子的信息

    【讨论】:

      猜你喜欢
      • 2019-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多