Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用HTML.begin通知MVC 4重定向问题_Javascript_Jquery_Forms_Asp.net Mvc 4_Razor - Fatal编程技术网

Javascript 用HTML.begin通知MVC 4重定向问题

Javascript 用HTML.begin通知MVC 4重定向问题,javascript,jquery,forms,asp.net-mvc-4,razor,Javascript,Jquery,Forms,Asp.net Mvc 4,Razor,我有以下顾虑(可能正在寻找一种不同的方法)。我有一个表格,我发送给一个返回void的post控制器。我的表单使用以下格式: using (Html.BeginForm("Action", "Controller", FormMethod.Post, new { id = "frm", area = "MyArea" })) 我确实需要这些参数,以便所有其他事情都能正常工作,但问题是,在我的表单提交后,它会尝试重定向到该控制器/操作,因为它是一个无效操作,所以我会得到一个空白页。我有一些java

我有以下顾虑(可能正在寻找一种不同的方法)。我有一个表格,我发送给一个返回void的post控制器。我的表单使用以下格式:

using (Html.BeginForm("Action", "Controller", FormMethod.Post, new { id = "frm", area = "MyArea" }))
我确实需要这些参数,以便所有其他事情都能正常工作,但问题是,在我的表单提交后,它会尝试重定向到该控制器/操作,因为它是一个无效操作,所以我会得到一个空白页。我有一些javascript用于submit按钮的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)中执行检查

“我想重定向到Controller2/Action2…而不是表单包含的后期操作(Controller/action)。”

如果我理解了这条语句,您希望发布到Controller/Action,然后重定向到Controller2/Action2。要执行此操作,请从post操作返回RedirectToAction

public ActionResult Action(MyViewModel vm)
{
   if(ModelState.IsValid)
   {
      //do whatever, save to database
      return RedirectToAction("Action2", "Controller");
   }

   //error
   return View();
}

为什么不将返回类型从
void
设置为
ActionResult
,然后将其发送回您的Index()或其他地方(使用
return RedirectToAction(“Index”);
)呢我考虑过这一点,但是,如果这样做,我就无法发布引导模式(我的successfulSave函数)您是否正在尝试实现类似AJAX的功能?或多或少,除了我不认为AJAX表单接受我传递的参数之外,是吗?这个方法完全符合我的要求,只是它重定向到错误的操作。是的,您可以将参数发送到AjaxForm。如果是我,我只需要创建一些jQuery来创建一个AJAX请求,然后将您的方法从
void
更改为
JsonResult
,然后它将成为一个真正的AJAX请求。MVC的ajax功能也可以使用,但有一个轻微的学习曲线。我不认为你能用一个简单的形式做你想做的事情;这需要AJAX,但我想显示或完成onclick事件下完成的工作。显示successfulSave消息,这样您将向他们显示成功消息3秒钟,然后执行重定向?那么我同意其他人的看法。我将连接到表单提交事件,防止默认提交行为发生,并使用$.ajax处理成功事件。Ajax.BeginForm有一个成功的事件,但我想你会发现它的所有默认行为都会干扰你正在尝试做的事情。这可能是最好的办法。我将在beforeSend上显示confirm,在成功后,我将只包括重定向,在成功时显示successfulSave对话框。我感谢你的帮助:)