我有以下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吗?
答案 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也是选项。