没有要显示的代码。我只想了解一些事情。我已经做了一些MVC代码(我有一个模型,我要求Visual Studio创建Controller和View)。 每个视图只有" ONE MODEL"相关。因此,使用Razor,我可以显示此模型的数据。我玩我的代码,直到现在我都明白了。
但...... 同样的观点,我们如何与另一个模型合作?
对我来说,模型只是一个具有属性等的类。我的数据库有一个等效的数据表"对于每个型号。我可以用Entity Framework操纵它......没问题。但是,我需要在SAME VIEW中使用来自不同模型(不同表)的DATA,Visual Studio不允许我在视图中使用另一个MODEL。
策略是什么? (或者我可能不明白......)
谢谢。
答案 0 :(得分: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?
答案 1 :(得分:0)
您可以将剃刀视图的模型类型更新为您想要的任何类型。只要从操作方法传递该类型,它就会起作用。
只需打开剃刀视图,然后更改模型所在的行。
@model Customer
现在您需要确保从操作中传递Customer对象
public ActionResult Create()
{
return View( new Customer());
}
同样,在创建视图时,您无需在“对话框”框中选择“模型”类型。您可以将其保留为空并根据需要将其添加到剃刀视图中(如上所示)
如果要从2个不同的表中提取数据,请创建一个具有视图所需属性的新视图模型,并将其用作视图的模型类型。
答案 2 :(得分:0)
你应该使用ViewModal创建一个ViewModal,它将根据我们的需要组合两个模态属性
ViewModel包含强类型视图中表示的字段。它用于将数据从控制器传递到具有自定义模态的强类型视图
了解如何在下面的链接MVC中使用View Modal -
演示如何在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; }
}