Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.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 MVC5视图如何使用参数数据请求控制器启动另一个视图_Javascript_Jquery_Asp.net_Asp.net Mvc - Fatal编程技术网

Javascript MVC5视图如何使用参数数据请求控制器启动另一个视图

Javascript MVC5视图如何使用参数数据请求控制器启动另一个视图,javascript,jquery,asp.net,asp.net-mvc,Javascript,Jquery,Asp.net,Asp.net Mvc,这是一个MVC5项目。我无法从父视图中显示第二个视图。我的父视图是包含行项目的采购订单。要通过从父视图启动第二个视图来添加行项目。两个视图使用相同的控制器,但每个视图都有自己的操作方法。 我使用PurchaseOrder视图中的以下JavaScript将数据传递到PurchaseOrderAddItem视图(子视图): 下面是接收上述ajax请求的控制器中的操作方法: [HttpPost] public ActionResult PurchaseOrderAddItem(LineItemReqJ

这是一个MVC5项目。我无法从父视图中显示第二个视图。我的父视图是包含行项目的采购订单。要通过从父视图启动第二个视图来添加行项目。两个视图使用相同的控制器,但每个视图都有自己的操作方法。 我使用PurchaseOrder视图中的以下JavaScript将数据传递到PurchaseOrderAddItem视图(子视图):

下面是接收上述ajax请求的控制器中的操作方法:

[HttpPost]
public ActionResult PurchaseOrderAddItem(LineItemReqJsonObj aLineItemReqJsonObj)
{
  LineItemViewModel aLineItemViewModel = new LineItemViewModel();

  aLineItemViewModel.PurchaseOrderId = aLineItemReqJsonObj.PurchaseOrderId;
  aLineItemViewModel.VendorId = Convert.ToInt32(aLineItemReqJsonObj.VendorValue);

  return View(aLineItemViewModel);
}
下面是控制器中的类,该类在从JavaScript传入数据时将数据填充到控制器中:

   public class LineItemJsonObj
    {
      public string PurchaseOrderId {get;set;}
      public string VendorText { get; set; }
      public string VendorValue { get; set; }
    };
下图说明了我正在尝试做的事情:

如图所示,我无法显示PurchaseOrderAddItem视图。在PurchaseOrder视图从控制器调用PurchaseOrderAddItem操作后,如何让PurchaseOrderAddItem视图显示并接收参数数据? 提前谢谢

--更新时间:2020年2月17日1:38太平洋标准时间-- 我可能不正确地认为控制器可以启动PurchaseOrderAddItem视图,当 closed可以以某种方式将生成的新模型数据返回到PurchaseOrder 使用启动此操作的JavaScript查看

我开始考虑使用JavaScript$Ajax来 到达控制器不是正确的方法。我现在查查看 也许我应该从PurcahseOrder视图加载另一个网页 使用参数数据创建新的PurchaseOrderAddItem视图。然而,这里的挑战是 可能是打包整个PurchaseOrder视图模型数据以与 PurchaseOrderAddItem视图请求。如果我有整个PurchaseOrder视图模型 数据当我退出PurchaseOrderAddItem视图时,我将能够加载新的 PurchaseOrder视图并向其传递第一个实例中的所有数据,以便 重新填充以包括新添加的行项目。我不确定这是否正确 这样做的正确方法。我还没有看到任何这样的例子 已处理应用程序视图表示问题。如果有人可以,我将不胜感激 请给我指出任何可能涉及如何设计这类产品的互联网文章 MVC应用程序。这在桌面应用程序中很容易做到,但在web开发中却很难做到 有了MVC,情况就大不相同了,需要做的工作比什么都多
在WPF或WinForms中。

在这种情况下,我的解决方案是使用TempData dictionary对象帮助将数据从PurchaseOrder视图请求传输到LineItem视图并返回。此数据传输中没有敏感数据,因此使用TempData应该可以。此外,启动LineItem视图以创建新的行项目对我来说效果更好,因为我只需要在Html.BeginForm块中执行标准的提交操作。提交按钮提供的标准post操作是我在本例中使用的,而不是在JavaScript中运行$.Ajax代码的按钮。在这种情况下确实不需要Ajax,因为整个PurchaseOrder视图将被LineItem创建视图所取代。

也许您可以看看这个示例—使用局部视图可以实现您希望在设计中实现的功能。如果您想在同一页面上加载详细信息模型,那么局部视图可能是正确的方法。。。如果您只想将模型发送到控制器并打开一个新页面,那么您可以使用return RedirectToAction(“details”,model)重定向到视图;其中索引是另一个视图。
   public class LineItemJsonObj
    {
      public string PurchaseOrderId {get;set;}
      public string VendorText { get; set; }
      public string VendorValue { get; set; }
    };