Javascript MVC5视图如何使用参数数据请求控制器启动另一个视图
这是一个MVC5项目。我无法从父视图中显示第二个视图。我的父视图是包含行项目的采购订单。要通过从父视图启动第二个视图来添加行项目。两个视图使用相同的控制器,但每个视图都有自己的操作方法。 我使用PurchaseOrder视图中的以下JavaScript将数据传递到PurchaseOrderAddItem视图(子视图): 下面是接收上述ajax请求的控制器中的操作方法: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
[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; }
};