1

我有以下担忧(也许正在寻找一种不同的方式来做到这一点)。我有一个表单,我发送给一个返回 void 的 post 控制器。我的表格使用以下格式:

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

4

1 回答 1

2

“我想重定向到 Controller2/Action2……而不是表单保存的发布操作(Controller/Action)。”

如果我理解这句话,你想发布到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();
}
于 2013-08-02T18:37:05.167 回答