ASP.NET MVC - 表单提交后重定向

时间:2014-06-16 09:44:53

标签: asp.net-mvc forms redirect

我有一个ASP.NET MVC网站和一个"配置"用表格查看。

当我提交表单时,我想做一些事情,然后重定向到我的"初始化" ViewResult ......怎么做?

我的表格:

@using (Html.BeginForm("Save", "Home", FormMethod.Post, new { id = "Config" }))
{
     // Some fields

     <input type="submit" value="Save" />

}
然后,&#34; Save&#34;行动:

[HttpPost]
[ValidateAntiForgeryToken()]
public async Task<RedirectToRouteResult> Save(Config websiteConfiguration)
    {
        // Do some stuff

        bool ok = await myMethod();

        if(ok)
        {
            return RedirectToAction("Initialization");
        }

    }

我尝试了其他可能性,但我没有设法让它发挥作用......

起来,我还有问题......

3 个答案:

答案 0 :(得分:2)

不确定此问题是否与早期版本的MVC有关,但我经常忘记[HttpPost]标签可能位于控制器中的ActionResult上方,而不仅仅是JsonResult上方。

所以最简单的MVC风格的答案就是使用Html.BeginForm并发布到ActionResult(带有[HttpPost]属性),其中你执行你的逻辑,然后在你处理后控制器端后调用RedirectToAction

这似乎比所有客户端小提琴容易得多,例如window.location.href =&#39;&#39;等...

答案 1 :(得分:0)

这是您的Form Post方法应该是什么样的

<HttpPost>
<ActionName("Respond")>
Function Respond_post(viewModel As FormsRespondModel) As ActionResult

    viewModel.form.formId = Guid.Parse(Request("formId"))

    viewModel.form.loadForm(Guid.Parse(Request("formId")))

    If (viewModel.form.formNotifications.onSuccess = "redirectOnSuccess") Then
        Return Redirect(viewModel.form.formNotifications.redirectUrl)
    End If

    Return RedirectToRoute("form_finished")
End Function

答案 2 :(得分:-1)

试试这个:

<input id="btnSave" name="btnSave" type="submit" value="Save" onclick="window.location = '@Url.Action("Action_Name", "Controller_Name")'; return false;" />