如何从另一个视图上编写的 JS 代码重定向到控制器,并将 JSON 对象随之传递
How to redirect to a controller from JS code written on another view and pass JSON object along with it
我正在使用 ASP.NET MVC 3,我是新手。我在一个视图上有一个 EXTJS 网格,在做出选择后,用户被重定向到另一个填充所选值的网格。此网格放置在另一页上。在父网格上,我使用了这个:
$(function () {
$("#btnRedirect").click(function () {
GetSelectedRecord(); //Gets the selected record on the jsonlst variable
var link = '@Url.Action("GetData","ChildGrid",new {jsonData="-1"})';
link = link.replace("-1", jsonlst);
window.location.href = link;
});
});
其中 jsonlst 是 JSON 对象,它包含网格中的选定记录。
GetData 操作只需:-
public ActionResult Get(string jsonData)
{
lst = new JavaScriptSerializer().Deserialize<IList<ParentGrid>>(jsonData);
return RedirectToAction("Index", new { strJson = jsonData });
}
但问题是我的 URL 包含整个 json 字符串作为查询字符串,看起来不太好。还有其他方法可以实现这一点吗?
如果您不想在 URL 中显示 json,则在将数据发送到"getdata"操作时,您应该使用 POST 而不是 GET。我能想到的最简单的方法是创建一个带有隐藏字段的表单,然后提交它。所以你在某处创建一个表单
<form id="something" href='@Url.Action("GetData","ChildGrid")' method="POST">
<input type="hidden" name="jsonData" id="jsonData" />
</form>
然后在 btnredirect 中执行此操作:
$("#jsonData").value(jsonLst);
$("#something").submit();
您必须确保在控制器中,可以使用 POST 方法访问该操作。
另外,为什么要混合jquery和EXTjs?如果你正在使用 EXTJ 开发大多数 UI,那么最好使用 ExtJS 而不是 jquery 来处理事件和 DOM 操作。
相关文章:
- Ember.js:将Em.$.getJSON转换为promise并将响应绑定到控制器上下文的正确方法
- 如何将日期时间值附加到表单数据并在控制器中接收它
- 将Scope变量作为指针发送,并在控制器外部对其进行更改
- Action使用Javascript链接并将值传递给控制器
- 将视图链接到模型并将视图链接至控制器的代码位于何处
- 我们可以将控制器中的JSON数据(MM/DD/YYYY格式)与今天的's日期,并在数组中显示筛选列表
- 如何获取逗号delimated(拆分)字符串值并将其传递给控制器
- 如何从另一个视图上编写的 JS 代码重定向到控制器,并将 JSON 对象随之传递
- 选择时获取下拉值,并将其传递给控制器,而无需刷新页面
- 使用 C# 在控制器中创建数据结构并将其传递到视图中
- 从jQuery Fullcalendar获取数据并将其传递给控制器
- 将 Model.ID 绑定到复选框列表,并将模型.X、模型.Y 等属性发布到控制器
- 使用 Ajax jquery 获取数据并将参数发送到控制器
- AngularJS 模型绑定并将模型值传递给控制器方法
- 在Angular Service中获取数据并将其传递给另一个控制器
- 如何使promise数据对象在控制器中可用,并将数据从promise传递给新函数
- 如何在ASP.NET MVC 4中使用JavaScript获取DropDownList选定的值并将其发送到控制器
- 如何从ng repeat内部获取var并将其传递给控制器,而不是将其传递回ng repeat
- 从工厂请求数据并将数据返回给同一工厂,以便在控制器之间共享
- 在javascript函数中绑定模型并将其传递给控制器