【发布时间】:2013-08-02 18:12:33
【问题描述】:
我有以下顾虑(也许正在寻找不同的方法来做到这一点)。我有一个表单,我发送给一个返回 void 的 post 控制器。我的表单使用以下格式:
using (Html.BeginForm("Action", "Controller", FormMethod.Post, new { id = "frm", area = "MyArea" }))
我确实需要这些参数才能使所有其他事情正常工作,但问题是在我的表单提交后,它会尝试重定向到该控制器/动作,并且由于它是无效动作,所以我得到一个空白页。我有一些 javascript 用于提交按钮的 onclick 事件,该按钮包含我想要重定向到的位置:
onclick='var promise = Dialog("Confirm:", "Are you sure you wan to proceed? ","", "frm");
promise.fail(function ()
{successfulSave("Error!", "There was a problem processing your request");});
promise.done(function ()
{ $("#frm").submit(); successfulSave("Success!", "Locale Saved Successfully");
setTimeout(function() {window.location.href="@Url.Action("Action2", "Controller", new {area = "MyArea"})";}, 3000);});'
我想重定向到 Controller2/Action2...而不是表单保存的发布操作 (Controller/Action) 并在 onclick 事件 (successfulDialog) 中执行检查。
【问题讨论】:
-
为什么不将返回类型从
void设置为ActionResult并将其发送回您的 Index() 或其他东西(使用return RedirectToAction("Index");) -
我想过这个,但是,如果我这样做,我无法发布引导模式(我的成功保存功能)
-
您是否正在尝试实现类似 AJAX 的功能?
-
或多或少,除非我认为 ajax 表单不接受我传递的参数,对吗?这个方法完全符合我的要求,只是它重定向到不正确的操作
-
是的,您可以向 AjaxForm 发送参数。如果是我,我会简单地创建一些 jQuery 来创建 AJAX 请求,然后将您的方法从
void更改为JsonResult,然后这将是一个真正的 AJAX 请求。 MVC 的 ajax 东西也可以工作,但是学习曲线有点小。我不认为你可以用一个简单的表格来做你想做的事情。这将需要 AJAX 或其他。
标签: javascript jquery forms asp.net-mvc-4 razor