【发布时间】:2012-06-20 12:06:06
【问题描述】:
我需要使用 POST 将用户的表信息发送到 MVC 控制器(以将其保存在服务器的会话中)。
我看到使用嗅探器成功传递了 POST 的信息,但它从未到达实际的 MVC 控制器(它从未到达断点!)。
我的代码:
<script type="text/javascript">
$(document).ready(function () {
$("#btnSave").click(function () {
var tableStr = $("#divTable").html();
$.post("Home/Save/", tableStr, function (data) {
if (data) {
alert("Great success!");
}
else {
alert("Fail!");
}
});
return false;
});
});
</script>
<h2><%: ViewBag.Message %></h2>
<%=Ajax.ActionLink("Show Users", "LoadUsers", new AjaxOptions() { InsertionMode = System.Web.Mvc.Ajax.InsertionMode.Replace, UpdateTargetId = "divTable" }) %>
<center><div id="divTable"></div></center>
<input type="button" id="btnSave" value="Save" />
控制器:
[HttpPost]
public ActionResult Save(string tableHtml)
{
Session["TableStr"] = tableHtml;
return new JsonResult() { Data = true };
}
我做错了什么??谷歌搜索了好几个小时!
有没有更简单的方法可以将此信息传递给我的服务器会话? 这必须是 AJAX(A-Synchronic 调用)。
【问题讨论】:
-
用谷歌搜索了几个小时 - 没有提到将
[HttpPost]添加到您的保存操作的结果? -
如果遇到 404 错误,请尝试在公共控制器方法上方添加 [HttpPost] 属性。
-
1.添加 [HttpPost] 并没有改变任何东西。 2. 我没有收到任何 404,看起来视图只是重置了(没有在 Session 中保存变量)。
-
视图重置,因为您返回的是
ViewResult而不是JsonResult。请参阅下面的答案。
标签: jquery ajax asp.net-mvc post controller