【发布时间】:2014-10-13 16:38:04
【问题描述】:
这是我的 JQGrid 代码:
click: function (e) {
debugger;
var id = $(e.target).closest("tr.jqgrow").attr("id");
rowdata = jQuery("#EmpTable").getRowData(id);
Data = { Id: rowdata.Id, Name: rowdata.Name, Designation: rowdata.Designation };
var url = 'http://localhost:50428/Script/Edit/';
return $.post(url, Data);
}
这是我收集数据的控制器代码
[HttpPost]
public ActionResult Edit(FormCollection form)
{
gridmodel properties = new gridmodel();
properties.Id = Convert.ToInt32(form["id"]);
properties.Name = form["Name"];
properties.Designation = form["Designation"];
ViewBag.id = properties.Id;
ViewBag.name = properties.Name;
ViewBag.designation = properties.Designation;
return View();
}
现在这是我的查看代码
从控制器传递到视图的数据
@model MVC5_JQGrid.Models.gridmodel
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Edit</title>
</head>
<body>
<div>
Id:@ViewBag.id
<br />
Name:@ViewBag.name
<br />
Designation:@ViewBag.designation
</div>
</body>
</html>
但我无法加载此页面,但在网络中 ---> 响应正文我可以看到这些值已分配
更新
您好 Venkata,感谢您的回答,我将保留您提到的要点,并从我这边 +1 进行观察,解决问题。它已从 oleg 建议中解决:(这是 Oleg 给出的答案)您的问题的原因是 $.post(url, Data); 的使用它只是发送关于 $.ajax({url: "/Script/Edit", data: Data, type: "POST"}); 的数据。您需要改为 $.submit 。如果您要使用 HTTP GET,那么您可以将包含参数的新 URL 分配给 location.href(类似于 location.href = "/Script/Edit?" + $.param(Data))。在 HTTP POST 的情况下,需要使用包含的元素构建(或者只是在页面上隐藏表单,其中包含具有所需名称属性的所有必需元素)并使用 $.submit。 感谢 oleg 和 Venkata 的帮助
【问题讨论】:
-
尝试移除强制转换 IEnumerable
并查看 ViewData 是否打印出 div 中的值?话虽如此,我会使用其中包含 GridModel 的 ViewModel 类,而不是使用 ViewData -
tranceporter 感谢回复帖子,我已经按照你的方式改了但是没有运气仍然无法查看另一个视图,我仍然居住在网格页面中
-
请将解决方案作为新答案发布。
-
当然请找到解决办法
标签: c# jquery asp.net-mvc jqgrid