Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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/6/asp.net-mvc-3/4.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 绑定viewmodels并将数据插入控制器_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 绑定viewmodels并将数据插入控制器

Asp.net mvc 绑定viewmodels并将数据插入控制器,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我在尝试学习mvc时遇到了一个障碍。我选择mvvm方法,因为我认为这适合我 如果你想到一个允许客户订购产品的网站 我的数据库包含3个表 dbo.Product ProductID ProductName db.Order OrderID OrderDate ProductOrderID db.OrderProducts OrderID ProductID QuantityOrdered dbo.产品 产品ID 产品名称 db.订单 订单编号 訂單日期 ProductOrderID db.Or

我在尝试学习mvc时遇到了一个障碍。我选择mvvm方法,因为我认为这适合我

如果你想到一个允许客户订购产品的网站

我的数据库包含3个表

dbo.Product ProductID ProductName db.Order OrderID OrderDate ProductOrderID db.OrderProducts OrderID ProductID QuantityOrdered dbo.产品 产品ID 产品名称 db.订单 订单编号 訂單日期 ProductOrderID db.OrderProducts 订单编号 产品ID 数量有序 我使用实体框架。我会创建两个视图模型吗

OrderViewModel看起来像

 public class OrderViewModel   
 {      
   public Order Order { get; set; }
   public List<ProductOrderViewModel> AddedProducts { get; set; }  
 }
公共类OrderViewModel
{      
公共秩序{get;set;}
公共列表AddedProducts{get;set;}
}
而不是第二个像这样的

public class ProductOrderViewModel    
{        
 public int OrderID { get; set; 
 public List<Product> Products { get; set; }        
 public int QuantityOrdered { get; set; } 
}
公共类ProductOrderViewModel
{        
公共int-OrderID{get;set;
公共列表产品{get;set;}
公共整数数量有序{get;set;}
}
我想使用jquery尽可能多地执行客户端加载,同时尽可能多地删除对服务器的调用,所以我想

  • 创建一个强类型为OrderViewModel的视图,并将其称为CreateOrder
  • 使用下拉列表绑定可用的productname和productID,创建基于my ProductOrderViewModel的局部视图 3.然后将局部视图加载到视图中
  • 在我的CreateOrder视图中创建2个绑定到ProductID和QuantityOrdered的隐藏字段
  • 使用jquery,使用一个按钮将所选产品下拉列表和数量文本框中的值传递到隐藏字段中,该按钮使用简单的“,”分隔每个项目id和数量,然后添加清除这些值,为下一个要添加的项目做好准备
  • 然后我使用automapper和我的控制器来映射viewmodels,这允许我将订单插入实体框架


    这是正常的做事方式还是我完全偏离了正轨?

    1听起来更直截了当,javascript代码更少

    我喜欢jquery和javascript,但尽量少写。与VS的javascript编辑器和Firebug等相比,C#和VisualStudio是非常强大的开发工具

    此外,automapper最好用于从域/模型/业务对象(无论我们现在叫它们什么;)开始,而不是从另一个方向



    将它们存储在隐藏的表单字段中。

    我将采用与jfar相反的方法,因为我不介意使用Javascript。请检查。它是一个MVVM(silverlight/wpf样式绑定)浏览器中的实现。应该为您提供一个良好的起点。我倾向于将此方法用于涉及列表操作或计算字段的任何客户端编辑。当用户需要能够同时编辑多个项目时,此方法也很有效

    如果您不采用这种方法,我有一个建议添加到您的解决方案中。不要在隐藏字段中使用逗号分隔的值,而是使用JQuery或全局变量*将值作为JSON传递。维护人员最不希望看到的是不明确的数组或
    .split(','))
    s在代码中。我现在处理的代码看起来就是这样,但并不漂亮

    *可以将名称空间挂起到JQuery对象之外:

    $.my_stuff = $.my_stuff || {};
    $.my_stuff.foo = { id : 1, quantity: 42 };
    

    编辑:这里是。我认为JSON模型绑定在MVC3中是开箱即用的,但我不是100%确定,因为我仍然在使用2.0。

    hi jfar,很抱歉我编辑了我的文章。为了让它更有意义。我只是不确定我应该如何或在哪里存储ProductID和QuantityOrdered。那么我该如何建立产品和数量列表在jquery中命令传回控制器?