Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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
Asp.net mvc 3 ASP.net MVC控制器操作-如何防止重定向_Asp.net Mvc 3_Jquery - Fatal编程技术网

Asp.net mvc 3 ASP.net MVC控制器操作-如何防止重定向

Asp.net mvc 3 ASP.net MVC控制器操作-如何防止重定向,asp.net-mvc-3,jquery,Asp.net Mvc 3,Jquery,我的行动有以下几点 [AjaxException] public ActionResult DoSomething(sring someParam1, string someParam2) { //do whatever you need to do here, db etc return new EmptyResult(); } 在我的html中 <form id="search-frm" name="search-frm" action="@Url.Action(

我的行动有以下几点

[AjaxException] 
public ActionResult DoSomething(sring someParam1, string someParam2) {

    //do whatever you need to do here, db etc
    return new EmptyResult();
}
在我的html中

<form id="search-frm" name="search-frm" action="@Url.Action("DoSomething", "MyActions")" method="post" >

    <input type="button" id="search-btn" value="search" class="btn" onclick="DoSomething();return false;" />
    <input type="text" name="param1" id="param1" />
    <input type="text" name="param2" id="param2" />
</form>
当我点击按钮,在控制器操作
DoSomething
完成后,我会被重定向到
MyActions/DoSomething
。有没有办法不使用jquery
$.ajax
?我只需要做一些事情,而不是离开现有的页面


谢谢你。

因为你的代码很简单。当您单击按钮时,您正在调用
DoSomething
javascript函数并在其中提交表单。因此,它与普通表单提交相同(单击提交按钮提交)。这就是它重定向(实际上被发布到
DoSomething
action)的原因

如果您不想离开当前页面,您可以使用
ajax
进行发布,获得结果并停留在同一页面中

1)从HTML标记中去掉OnClick事件绑定

2)添加处理表单提交的javascript

$(function(){
  $("#search-frm").submit(e){

   e.preventDefault();  // prevent the default form posting. Let's stay here
   $.post("@Url.Action("DoSomething","MyActions")",$("#search-frm").serialize(), function(data){
          //do something with the response data 
   });

  });     
});
不确定为什么从操作方法返回
EmptyResult
。您可能需要返回一些有效的响应,以指示您尝试执行的操作的状态

[HttpPost]
public ActionResult DoSomething(string param1,string param2)
{
  //do something 
   return Json(new 
             { Status= true,
               Message="Succesfully saved"
             });      
}
您可以保留一个通用的
ViewModel
来返回这样的结果并使用它,而不是像上面那样动态键入

public class OperationStatus
{
  public bool Status  { set;get;}
  public string Message { set;get;}
}
在你的行动方法中

[HttpPost]
public ActionResult DoSomething(string param1,string param2)
{
  //do something 
  var res=new OperationStatus();
  res.Status=true;
  res.Message="Successfully Added";
   return Json(res);      
}

因为你的代码是这样的。当您单击按钮时,您正在调用
DoSomething
javascript函数并在其中提交表单。因此,它与普通表单提交相同(单击提交按钮提交)。这就是它重定向(实际上被发布到
DoSomething
action)的原因

如果您不想离开当前页面,您可以使用
ajax
进行发布,获得结果并停留在同一页面中

1)从HTML标记中去掉OnClick事件绑定

2)添加处理表单提交的javascript

$(function(){
  $("#search-frm").submit(e){

   e.preventDefault();  // prevent the default form posting. Let's stay here
   $.post("@Url.Action("DoSomething","MyActions")",$("#search-frm").serialize(), function(data){
          //do something with the response data 
   });

  });     
});
不确定为什么从操作方法返回
EmptyResult
。您可能需要返回一些有效的响应,以指示您尝试执行的操作的状态

[HttpPost]
public ActionResult DoSomething(string param1,string param2)
{
  //do something 
   return Json(new 
             { Status= true,
               Message="Succesfully saved"
             });      
}
您可以保留一个通用的
ViewModel
来返回这样的结果并使用它,而不是像上面那样动态键入

public class OperationStatus
{
  public bool Status  { set;get;}
  public string Message { set;get;}
}
在你的行动方法中

[HttpPost]
public ActionResult DoSomething(string param1,string param2)
{
  //do something 
  var res=new OperationStatus();
  res.Status=true;
  res.Message="Successfully Added";
   return Json(res);      
}

为什么不使用AJAX呢?这似乎是实现您想要实现的目标的完美工具:提交表单并保持在同一页面上。我怀疑你的问题遗漏了一些重要的细节。所以请提供它们。现在我来解释一下你的问题:
如何在没有相机的情况下观看和拍照?
。无意义。这就是为什么你要发布无意义的复制品?无意义的复制品没有包含足够的详细信息以便负责。你说一个普通的控制器动作调用需要403ms,而对同一动作的AJAX调用需要3400ms,这非常有趣,因为AJAX调用就像一个普通的动作调用。我想你的量度有点偏差。这个问题还是原来的问题?您需要什么细节?为什么不使用AJAX?这似乎是实现您想要实现的目标的完美工具:提交表单并保持在同一页面上。我怀疑你的问题遗漏了一些重要的细节。所以请提供它们。现在我来解释一下你的问题:
如何在没有相机的情况下观看和拍照?
。无意义。这就是为什么你要发布无意义的复制品?无意义的复制品没有包含足够的详细信息以便负责。你说一个普通的控制器动作调用需要403ms,而对同一动作的AJAX调用需要3400ms,这非常有趣,因为AJAX调用就像一个普通的动作调用。我想你的量度有点偏差。这个问题还是原来的问题?您需要什么详细信息?完全不使用$.ajax如何?$.post是$.ajax的一种简短形式,操作方法类型为post。我认为这就足够了。您也可以使用它。如何评估客户端上的JSON响应?请以您收到的JSON格式将其作为单独的问题发布。完全不使用$.ajax如何?$.post是$.ajax的缩写形式,操作方法类型为post。我认为这就足够了。您也可以使用它。如何评估客户端上的JSON响应?请将其作为单独的问题与您收到的JSON格式一起发布