Javascript ASP.NET MVC将json数组作为常规post请求提交给控制器(nonajax)
我在网上找到的所有json示例都只显示了如何使用jquery命令$.ajax()提交json数组。我正在以json数组的形式从自定义用户控件提交一些数据。我想知道是否可以将json数组作为常规post请求提交给服务器(像普通表单一样),以便浏览器呈现返回的页面 控制器:Javascript ASP.NET MVC将json数组作为常规post请求提交给控制器(nonajax),javascript,asp.net-mvc,json,post,Javascript,Asp.net Mvc,Json,Post,我在网上找到的所有json示例都只显示了如何使用jquery命令$.ajax()提交json数组。我正在以json数组的形式从自定义用户控件提交一些数据。我想知道是否可以将json数组作为常规post请求提交给服务器(像普通表单一样),以便浏览器呈现返回的页面 控制器: [JsonFilter(Param = "record", JsonDataType = typeof(TitleViewModel))] public ActionResult SaveTitle(TitleViewModel
[JsonFilter(Param = "record", JsonDataType = typeof(TitleViewModel))]
public ActionResult SaveTitle(TitleViewModel record)
{
// save the title.
return RedirectToAction("Index", new { titleId = tid });
}
Javascript:
function SaveTitle() {
var titledata = GetData();
$.ajax({
url: "/Listing/SaveTitle",
type: "POST",
data: titledata,
contentType: "application/json; charset=utf-8",
});
}
这是从保存按钮调用的。一切正常,但提交后浏览器仍保持在页面上。我曾考虑从服务器返回某种自定义xml并执行javascript重定向,但这似乎是一种非常有技巧的做法。任何帮助都将不胜感激。Phil Haack提供了一个示例,展示了自定义值提供程序而不是操作过滤器的用法。我不明白如果您想发布整版文章,为什么要发布Json。为什么不直接从Html表单元素中发布普通表单变量呢?这是一个老问题,但这可能对任何找到它的人都有用-- 您可以从web页面返回带有新标题ID的JsonResult
public ActionResult SaveTitle(TitleViewModel record) {
string tId = //save the title
return Json(tId)
}
然后根据ajax请求添加一个成功函数:
function SaveTitle() {
var titledata = GetData();
$.ajax({
url: "/Listing/SaveTitle",
type: "POST",
data: titledata,
contentType: "application/json; charset=utf-8",
success: function(data) { window.location = "/Listing/Index?titleId=" + data; }
});
}
这将在ajax请求成功后重定向页面。
我刚刚看到你在文章末尾提到了这一点,但我认为这是一种简单而快速的解决问题的方法。这是因为我没有对我试图发回的一些数据使用普通表单元素。我正在使用一个列表树类型控件(),它是通过浏览器上的javascript修改的,我想将树结构发回服务器。我的问题是从服务器返回的响应以及浏览器如何处理它。