所以这是我的控制器:
public class MyAccountController : Controller
{
public ActionResult MyAction(int id = 1)
{
return View();
}
[HttpPost]
public ActionResult MyAction(FormCollection values)
{
return Content(values["something"]);
}
}
这是我的观点:
@using (Html.BeginForm())
{
<input type="hidden" name="something" value="something" />
<input type="submit" />
}
它会按预期工作,如果您单击提交按钮,它将重定向页面并显示“某事”
但是当我将我的视图更改为:
<button id="button">submit</button>
<script type="text/javascript">
$("#button").on("click", function (e) {
$.post("/MyAccount/MyAction", {something:"something"})
});
</script>
它不会将“内容”返回给浏览器,我已经调试了应用程序,它进入我的帖子操作,但是当它到达“返回内容(值[”某事“]);”它没有做任何事情。
是jQuery以某种方式阻止我的应用程序重定向页面吗?
答案 0 :(得分:2)
$.post()
是一个ajax调用。如果你想对它做任何事情,你必须处理结果。
答案 1 :(得分:2)
它没有做任何事情,因为你没有告诉它做任何事情
$.post
只是从您的服务器获取数据;它不会显示它或任何东西。
您需要通过传递函数对回调参数中的数据执行某些操作。
答案 2 :(得分:1)
因为@SLaks和@bhamlin说$ .post是一个ajax调用。而且你必须处理它从服务器返回的内容。所以这就是我所做的:
<button id="button">submit</button>
<script type="text/javascript">
$("#button").on("click", function (e) {
$.post("/MyAccount/MyAction", { something: "something" }, function (data) {
$('body').replaceWith(data);
});
});
</script>
答案 3 :(得分:0)
看起来你错过了一个分号:
$.post("/MyAccount/MyAction", {something:"something"})
更改为
$.post("/MyAccount/MyAction", {something:"something"});