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

Asp.net mvc ASP.NET MVC-表单提交后重定向,asp.net-mvc,forms,redirect,Asp.net Mvc,Forms,Redirect,我有一个ASP.NETMVC网站和一个带有表单的“配置”视图 当我提交表单时,我想做一些事情,然后重定向到我的“初始化”ViewResult。。。怎么做 我的表格: @using (Html.BeginForm("Save", "Home", FormMethod.Post, new { id = "Config" })) { // Some fields <input type="submit" value="Save" /> } @使用(Html.Beg

我有一个ASP.NETMVC网站和一个带有表单的“配置”视图

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

我的表格:

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

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

}
@使用(Html.BeginForm(“Save”、“Home”、FormMethod.Post、new{id=“Config”}))
{
//一些领域
}
然后,“保存”操作:

[HttpPost]
[ValidateAntiForgeryToken()]
公共异步任务保存(配置网站配置)
{
//做点什么
bool ok=wait myMethod();
如果(确定)
{
返回重定向操作(“初始化”);
}
}
我尝试了其他的可能性,但我没能成功

向上看,我仍然有问题…

试试这个:

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

这就是表单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

函数Respond_post(viewModel作为FormsRespondModel)作为ActionResult
viewModel.form.formId=Guid.Parse(请求(“formId”))
viewModel.form.loadForm(Guid.Parse(请求(“formId”))
如果(viewModel.form.formNotifications.onSuccess=“redirectOnSuccess”),则
返回重定向(viewModel.form.formNotifications.redirectUrl)
如果结束
返回重定向路由(“表单_完成”)
端函数

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

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


这似乎比所有客户端的fiddle要容易得多,例如window.location.href=''等。

上面的代码会出现什么错误或问题?抱歉,它不会重定向,它会重新加载“配置”视图而不是标题如果“myMethod()”返回false,那么它将重新生成“配置视图”如果返回true,那么只会发生重定向,我想我的myMethod()返回true,重定向不起作用……请尝试更改代码,如我在回答中所示,如果它起作用,或者not@Amit,这将执行重定向,但这并不理想,如果您将数据发布到控制器,然后您应该从控制器端执行重定向。@标记它不是必需的。我们可以通过视图将数据发布到控制器easily@Amit,我的意图不是说这是错误的,我只是说什么是理想。这个地方只是为了分享知识。否决投票没有意义。别担心。
<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