使用HTML.BeginForm MVC 4重定向问题

时间:2013-08-02 18:12:33

标签: javascript jquery forms asp.net-mvc-4 razor

我有以下问题(可能正在寻找另一种方法)。我有一个表单,我发送到一个返回void的帖子控制器。我的表单使用以下格式:

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 ...而不是表单保存的post动作(Controller / Action)并在onclick事件中执行检查(successfulDialog)。

1 个答案:

答案 0 :(得分:2)

"我想重定向到Controller2 / Action2 ...而不是表单保存的帖子操作(控制器/操作)。"

如果我理解了这个陈述,你想发布到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();
}