【问题标题】:ASP.NET MVC 5 get 3 models data in 1 viewASP.NET MVC 5 在 1 个视图中获取 3 个模型数据
【发布时间】:2016-08-10 21:52:22
【问题描述】:

我正在尝试在 mvc 5 中做小型应用程序。在此我有 3 个模型,即组织模型、产品模型和包模型。

组织模式:

namespace Own.Models
{
  public class OrganisationViewModel
  {
    [Key]
    public int OrganisationID { get; set; }

    [Required(ErrorMessage = "Please enter Organisation name")]
    public string OrganisationName { get; set; }

    [Required(ErrorMessage = "Please enter organisation address")]
    public string OrganisationAddress { get; set; }

封装型号:

namespace Own.Models
{
  public class PackageViewModel
  {
    [Key]
    public int PackageID { get; set; }

    [Required(ErrorMessage = "Please enter packagename")]
    public string Packagename { get; set; }

    [Required(ErrorMessage = "Please enter packagedescription")]
    public string PackageDescription { get; set; }

产品型号:

namespace Own.Models
{
  public class ProductViewModel
  {
    [Key]
    public int ProductID { get; set; }

    [Required(ErrorMessage = "Please enter Product Name")]
    public string ProductName { get; set; }

    [Required(ErrorMessage = "Please enter Product Description")]
    public string ProductDescription { get; set; }

现在,我需要创建另一个名为 Submission 模型的模型。在这个提交视图中,我想要组织、产品和包的三个下拉列表。如果我通过在该下拉列表中选择项目来选择组织下拉列表,它应该显示组织 ID、组织名称和组织地址(它应该显示详细信息,只读)。

同样,对于包裹和产品,它也应该显示所有详细信息,在底部的一个视图中显示完整详细信息后,应该有一个按钮来保存详细信息。这里我没有使用任何数据库。只有一些静态数据。如何在最终模型视图中显示所有 3 个模型数据?以及如何在选择下拉菜单时获取只读数据。

【问题讨论】:

标签: asp.net asp.net-mvc asp.net-mvc-5


【解决方案1】:

您可以创建匿名类型来连接字段

 obj  =db.Org
.Where(...)
.ToList()
.Select(s => new 
 { ID=s.ID,
   Description = string.Format("{0}-- £{1}", s.Name,s.Description) 
 });

 Viewbag.OrgDdl=new SelectList(obj,"ID","Description");

在你看来,可以这样使用

             @Html.DropDownListFor(m1 => m1.ID, ViewBag.OrgDdl as IEnumerable<SelectListItem>)

希望对你有帮助

【讨论】:

    【解决方案2】:

    解决此问题的最佳方法是创建一个View Model,其中包含三个提到的对象作为属性。比如:

    public class MyNewViewModel
    {
      public OrganisationViewModel MyOrganisation { get; set; }
      public PackageViewModel MyPackage { get; set; }
      public ProductViewModel MyProduct { get; set; }
    }
    

    然后您可以首先在 MyNewViewModel 构造函数中填充您的属性,或者您可以在任何操作或 ajax 回调期间单独填充它们。这样您就可以查看全部相关数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2011-07-15
      相关资源
      最近更新 更多