我在网上找到的所有json示例都只显示了如何使用jquery命令$ .ajax()提交json数组。我将自定义用户控件中的一些数据作为json数组提交。我想知道是否可以将json数组作为常规发布请求提交给服务器(如普通表单),以便浏览器呈现返回的页面。
控制器:
[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重定向,但它似乎是一种非常hacky的做事方式。任何帮助将不胜感激。
答案 0 :(得分:2)
这是一个老问题,但这可能对找到它的人有用 -
您可以从网页
返回带有新titleId的JsonResultpublic 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请求后重定向页面。 我刚刚看到你在帖子的最后提到了这一点,但我认为这是解决问题的一种简单快捷的方法。
答案 1 :(得分:0)
Phil Haack有nice post discussing this scenario并显示自定义值提供程序的使用情况,而不是动作过滤器。
答案 2 :(得分:0)
我不明白为什么如果你想要整篇文章发帖,你想发帖Json。为什么不从Html表单元素中发布正常的表单变量?