Hon*_*ode 12 asp.net asp.net-mvc entity-framework c#-4.0 asp.net-mvc-3
我是ASP.NET MVC 3.0的新手,并尝试使用MVC ViewModel设计构建应用程序.
我想知道最佳做法是为ViewModel重新调整控制器,并在下面提出几个问题.这是我目前的理解(这可能是错误的)..
到目前为止,我已经通过创建一个新类并使用相同的名称添加来自不同基本模型的属性来创建ViewModel.此时我有以下问题:
问题1:每个ViewModel是否都有自己的控制器并访问每个基本模型存储库类以获取其值?
Q2:在ViewModel中,您是否应该包含使用属性的所有基本模型的ID字段,考虑到您可能希望通过ViewModels Controller将Update更新回基础模型库(需要ID值)?
问题3:如何使用接口绑定属性,以使用存储库来保存控制器中的模型.
我一直无法找到解释一步一步示例中的所有内容的教程或资源,完整的答案将是以下示例:
//型号1
public class Person
{
int PersonID {get;set;}
string FirstName {get;set;}
string LastName {get;set;}
DateTime DOB {get;set}
}
Run Code Online (Sandbox Code Playgroud)
//模型2
public class Place
{
int PlaceID {get;set;}
string Description {get;set;}
string AreaType {get;set;}
string PostCode {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
// ViewModel(包含模型中的属性)
publc class ViewModel
{
//Person attributes
int PersonID {get;set;}
string FirstName {get;set;}
string LastName {get;set;}
//Place attributes
int PlaceID {get;set;}
string Description {get;set;}
string AreaType {get;set;}
//other attributes
string someOtherAttributeForDisplay {get;set}
}
Run Code Online (Sandbox Code Playgroud)
// Model1接口(用于绑定模型)
public interface IPerson
{
string FirstName {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
// Model2接口(用于绑定模型)
public interface IPlace
{
string Description {get;set;}
string AreaType {get;set}
}
Run Code Online (Sandbox Code Playgroud)
// ViewModelController?
{
//What goes here?
}
Run Code Online (Sandbox Code Playgroud)
//库?
{
//what goes here?
}
Run Code Online (Sandbox Code Playgroud)
我想你可能有一个非常简单的概念.
首先是一些一般规则:
您不必使用接口.
视图模型应该是非常简单的类,它们只包含视图所需的信息.如果您的视图从显示的内容中发布不同的信息,则只需为POST创建不同的视图模型.
我们为视图模型使用{Controller} {Action} Model的命名约定.因此,对于"Post"控制器上名为"List"的动作,我们将有一个名为"PostListModel"的模型.
最后,在这里查看我的回复TryUpdateModel,ASP .NET MVC 3的真实示例
归档时间: |
|
查看次数: |
11199 次 |
最近记录: |