2016-02-19 50 views
0

无代码显示。我只想了解一些事情。我已经做了一些MVC代码(我有一个模型,我要求Visual Studio创建Controller和View)。 每个视图只有“一个模型”关联。所以,借助Razor,我可以显示这个模型的数据。我玩我的代码,直到现在我明白了。使用(显示)来自我当前视图中的其他模型的数据

但是... 在相同的观点,我们可以如何使用另一个模型?

对我来说,模型只是一个具有属性等的类。我的数据库对每个模型都有一个等效的“数据表”。我可以用Entity Framework来操纵它...没问题。但是,我需要在SAME VIEW中使用来自不同模型(不同表格)的DATA,并且Visual Studio不允许我在视图中使用另一个MODEL。

什么是策略? (或者我可能不明白......)

谢谢。

+0

您可以创建一个视图模型,构建为您的视图的表征的模型,谁可以包含一些楷模。 – AdrienTorris

+0

http://stackoverflow.com/questions/20775802/creating-a-viewmodel-from-two-ef-models-in-asp-net-mvc5/20775904#20775904 – Shyju

回答

3

该策略旨在构建视图模型,构建要显示的模型并表示需要使用的数据。

例子:

你有这些类,类谁是你的数据库的表示:

public class FootballTeam{ 
    public string Name{get;set;} 
    public string Logo{get;set;} 
} 

public class FootballGame{ 
    public Datetime Date {get;set;} 
    public string Competition {get;set;} 
} 

public class Referee{ 
    public string Name{get;set;} 
    public int Experience {get;set;} 
} 

要显示有关比赛的游戏的信息,您可以创建这个视图模型,类谁如果需要,可以参考您的商业模式的某些类别:

public class GameViewModel{ 
    [DisplayName("Home team")] 
    public FootballTeam HomeTeam{get;set;} 

    [DisplayName("Referee")] 
    public Referee Referee{get;set;} 

    [DisplayName("Visitor team")] 
    public FootballTeam VisitorTeam {get;set;} 

    [DisplayName("Comments")] 
    public List<string> RedactionComments{get;set;} 
} 

并创建一个视图,该视图将使用此GameViewModel。 一般来说,当你创建一个新的MVC项目时,你的表现层中有一个名为“ViewModels”的文件夹,其中包含一些像这样的类。

此方法允许将您的业务模型与您的演示模型分开,这是两个完全不同的事情。

这里有非常好的答案:What is ViewModel in MVC?

+0

谢谢你,很好的例子。 –

0

您可以更新您的Razor视图你想要的任何类型的模型类型。只要您从操作方法中传递该类型,它就会工作。

只需打开剃刀视图并更改它说明型号的类型。

@model Customer 

现在你需要确保你从你的行动

public ActionResult Create() 
{ 
    return View(new Customer()); 
} 

此外,当您创建一个视图传递Customer对象,你并不需要在对话框必然选择型号类型框。您可以保留它并根据需要将其添加到剃须刀视图中(如上所示)

如果要从两个不同的表中创建数据,请创建一个具有视图所需属性的新视图模型,并将其用作您的视图的模型类型。

+0

谢谢您的信息。我认为视图内的MODEL必须是与模型相关的(关系模型 - 视图 - 控制器)。好吧,我将修改控制器以便发回我想要的模型(数据)(在Index()方法内)。 –

+0

是的。 VS只是帮助你用你指定的模型类型创建一个视图。您可以随时将其重写为您想要的任何类型。 – Shyju

0

您应该使用ViewModal创建ViewModal,这将是两种模态特性组合按我们的需要

视图模型包含在强类型的视图中显示的字段。它被用来传递从控制器数据强类型的视图与自己定义的情态动词

了解如何使用浏览模态在MVC从以下链接 -

See In Image How View Modal Works

Understand View Modal In MVC

代码演示如何使用VIEWMODALS在MVC

Product.cs

public class Product 
    { 
     public Product() { Id = Guid.NewGuid(); } 
     public Guid Id { get; set; } 
     public string ProductName { get; set; } 

     public virtual ProductCategory ProductCategory { get; set; } 

    } 

ProductCategory.cs

public class ProductCategory 
{ 
    public int Id { get; set; } 
    public string CategoryName { get; set; } 

    public virtual ICollection<Product> Products { get; set; } 
} 

ProductViewModel.cs

public class ProductViewModel 
    { 
     public Guid Id { get; set; } 

     [Required(ErrorMessage = "required")] 
     public string ProductName { get; set; } 

     public int SelectedValue { get; set; } 

     public virtual ProductCategory ProductCategory { get; set; } 

     [DisplayName("Product Category")] 
     public virtual ICollection<ProductCategory> ProductCategories { get; set; } 
    } 
+0

谢谢你,很好的例子。 –

+0

@丹尼吉尔伯特请接受答案,如果它可以帮助你。所以我也可以帮助别人 –

相关问题