void控制器中的FormMethod.Post

时间:2017-02-17 19:38:23

标签: asp.net-mvc

我有以下HTML:

using (Html.BeginForm("EmailSend", "Home", FormMethod.Post))
{
code to enter email and press submit
}

和无效控制器:

[HttpPost]
[ValidateAntiForgeryToken]
public void EmailSend()
{
code to send email
}

显然,由于我正在处理一个无效控制器,因此无法显示。 我只是想在我的视图中从我的提交按钮触发此控制器,而不需要重定向。我想,因为这不是ActionResult它应该理解吗?

如何在不重定向的情况下触发我的控制器?我必须使用jQuery或Ajax吗?

1 个答案:

答案 0 :(得分:0)

从浏览器发帖需要向用户显示一些内容。你可以返回,例如:

return Content("OK");

但是,然后使用将逐字地看到纯文本“OK”响应。如果要触发即发即弃操作,请打开此后期操作的新窗口(可以向表单添加_target="blank"),然后返回带有确认的虚拟视图,或者JS关闭窗口或者其他什么。

或者,使用jQuery发送AJAX请求非常简单。

$.ajax({ 
   type: "post",
   url: "@Url.Action("EmailSend")",
   data: $("#form").serialize(),
   success: function() { alert("Email successful"); },
   error: function() { alert("An error occurred"); }
});

或类似的东西,其中$(“#form”)引用HTML表单,参数被序列化并发送到服务器。 MVC仍然会使用object属性来形成与标准HTTP POST操作匹配的参数。

这是another example。还有other plugins也是选项。