Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
jQueryAjax从视图调用控制器方法,但不显示在mvc中返回该方法的视图_Jquery_Ajax_Asp.net Mvc 4 - Fatal编程技术网

jQueryAjax从视图调用控制器方法,但不显示在mvc中返回该方法的视图

jQueryAjax从视图调用控制器方法,但不显示在mvc中返回该方法的视图,jquery,ajax,asp.net-mvc-4,Jquery,Ajax,Asp.net Mvc 4,我已经从Index.cshtml视图向主列表控制器中的PrintPreview方法发出了Ajax调用,并且还传递了参数。索引方法也存在于主列表控制器中,但当从PrintPreview返回视图时,方法调用将转到PrintPreview.cshtml页面,但该页面未加载,即未在浏览器中显示,而Index.cshtml页面在浏览器中显示,请帮助 $('#printbtn').click(function () { $.ajax({ type: 'POST', u

我已经从Index.cshtml视图向主列表控制器中的PrintPreview方法发出了Ajax调用,并且还传递了参数。索引方法也存在于主列表控制器中,但当从PrintPreview返回视图时,方法调用将转到PrintPreview.cshtml页面,但该页面未加载,即未在浏览器中显示,而Index.cshtml页面在浏览器中显示,请帮助

$('#printbtn').click(function () {
    $.ajax({
        type: 'POST',
        url: '@Url.Action("PrintPreview", "MasterList")',                
        data: 
{ saleorderIdList: JSON.stringify(saleorder_id),
orderIdList:JSON.stringify(order_id) },

        });
});





public ActionResult PrintPreview(string saleorderIdList, string orderIdList)
{
    var locationIdOfLoginUser = Convert.ToInt32(Session["LocationId"]);
    ViewBag.loccationName = Session["LocationName"];
    ViewBag.locationType = Session["LocationType"];
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    IEnumerable<int> saleOrderIds = new int[] { };
    IEnumerable<int> orderIds = new int[] { };
    if (saleorderIdList != null)
    {
        saleOrderIds = serializer.Deserialize<IEnumerable<int>>(saleorderIdList);
    }
    if (orderIdList != null)
    {
        orderIds = serializer.Deserialize<IEnumerable<int>>(orderIdList);
    }
    MasterListService masterListService = new MasterListService();
    var ordercollection = masterListService.GetSelectedorders(locationIdOfLoginUser, saleOrderIds, orderIds);
    return View(ordercollection);

}
$('#printbtn')。单击(函数(){
$.ajax({
键入:“POST”,
url:'@url.Action(“打印预览”、“主列表”),
数据:
{saleorderIdList:JSON.stringify(saleorder_id),
orderIdList:JSON.stringify(order_id)},
});
});
public ActionResult打印预览(字符串saleorderIdList,字符串orderIdList)
{
var locationIdOfLoginUser=Convert.ToInt32(会话[“LocationId”]);
ViewBag.LocationName=会话[“LocationName”];
ViewBag.locationType=会话[“locationType”];
JavaScriptSerializer serializer=新的JavaScriptSerializer();
IEnumerable saleOrderId=new int[]{};
IEnumerable orderId=newint[]{};
if(saleorderIdList!=null)
{
SaleOrderId=serializer.Deserialize(saleorderIdList);
}
if(orderIdList!=null)
{
OrderID=序列化程序。反序列化(orderIdList);
}
MasterListService MasterListService=新的MasterListService();
var ordercollection=masterListService.GetSelectedorders(locationIdOfLoginUser、SaleOrderId、OrderId);
返回视图(ordercollection);
}
在上面的代码中,我得到了数组saleorderid和orderid 同样在ordercollection中,我得到了预期的列表以供查看

调用也将转到PrintPreview视图在该视图中,我得到了传递到该视图的所有列表,但PrintPreview.cshtml页面没有显示,而是显示Index.cshtml页面从ajax调用传递的位置显示。如果您想重定向,请使用form submit而不是ajax调用,您的ajax调用将永远不会重定向

2) 或者,如果您仍然希望通过ajax调用实现,请使用局部视图重新加载ajax返回数据。然后您必须使用return PartialView(ordercollection)


正如这里所解释的,您所做的是调用函数,而不使用返回值执行任何操作。以下是Ajax调用的外观:

$('#printbtn').click(function () {
    $.ajax({
        type: 'POST',
        url: '@Url.Action("PrintPreview", "MasterList")',                
        data: 
{ saleorderIdList: JSON.stringify(saleorder_id),
orderIdList:JSON.stringify(order_id) },

onSuccess: function(response) {
    // THIS IS WHERE YOU DISPLAY THE RETURN CSHTML SOMEWHERE.  response RETURN VALUE IS NOTHING BUTH THE WHOLE CSHTML

      //you may do something like
  $('#mydiv').html(response);
  }

        });
});

假设您的url和后端代码工作正常,这将正常工作。

Ajax调用保持在同一页面上。如果要呈现由
PrintPreview
返回的视图,则它需要是
returnpartialview(ordercollection)success:
回调中,更新DOM。如果这不是你想要的,做一个普通的提交/发布到一个方法并重定向。你能建议代码示例你想要做什么?保持在同一页或重定向到另一个视图?但我必须将两个数组列表传递给该方法您可以实现这一点,借助Ajax+局部视图概念,查看Answer中提供的链接,但是如果我使用form submit,如何将两个数组列表传递给该方法在脚本jquery中,我获得了两个数组,那么该数组如何才能单击打印按钮的事件