我有一个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");
}
}
我尝试了其他可能性,但我没有设法让它发挥作用......
起来,我还有问题......
答案 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;" />