我有以下顾虑(可能正在寻找不同的方法来做到这一点)。我有一个发送到返回无效的后 Controller 的表单。我的表单使用以下格式:
using (Html.BeginForm("Action", "Controller", FormMethod.Post, new { id = "frm", area = "MyArea" }))
我真的需要这些参数才能让所有其他事情正常工作,但问题是在我的表单提交后,它会尝试重定向到该 Controller /操作,因为它是一个无效操作,所以我得到一个空白页面。我有一些用于提交按钮的 onclick 事件的 javascript,它包含我要重定向到的位置:
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) 中执行检查。
最佳答案
“我想重定向到 Controller2/Action2...而不是表单包含的后操作(Controller/Action)。”
如果我理解这个语句,你要post到Controller/Action,然后重定向到Controller2/Action2。为此,您从发布操作返回 RedirectToAction。
public ActionResult Action(MyViewModel vm)
{
if(ModelState.IsValid)
{
//do whatever, save to database
return RedirectToAction("Action2", "Controller");
}
//error
return View();
}
关于javascript - HTML.BeginForm MVC 4 的重定向问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18023545/