C# Visual Studio 2013添加视图

C# Visual Studio 2013添加视图,c#,asp.net-mvc,visual-studio-2013,C#,Asp.net Mvc,Visual Studio 2013,我创建类Poi和类地址 public class Poi { public string ID { get; set; } public string Title { get; set; } public DateTime Created { get; set; } public DateTime Modified { get; set; } public Address Address { get; set; } // ... } pu

我创建类Poi和类地址

    public class Poi
{
    public string ID { get; set; }
    public string Title { get; set; }
    public DateTime Created { get; set; }
    public DateTime Modified { get; set; }
    public Address Address { get; set; }

    // ...
}
public class Address
{
    public string Street { get; set; }
    public string Zip { get; set; }
    public string City { get; set; }
    public string Country { get; set; }
}

如何生成包含地址所有字段的视图Poi/Details.cshtml?

您必须将
地址作为模型向下传递给视图

在控制器中:

public ActionResult Details() 
{
   var model = new Address();
   model.Street = "Test address";

   return View(model);
}
然后在您的视图中,添加以下内容:

@model Address
这将允许视图知道它正在处理强类型的
地址
模型

然后可以使用
@Html.DisplayFor
列出视图中的所有属性,例如:

 @Html.DisplayFor(m => m.Street)
 @Html.DisplayFor(m => m.Zip)
 @Html.DisplayFor(m => m.City)
 @Html.DisplayFor(m => m.Country)

但是,最好创建一个
ViewModel
,而不是直接使用
地址
POCO。ViewModel可以从不同的层(例如数据库或Web服务)获取此信息,然后这些层可以独立地调用该层,而不是在控制器中,这允许更好地分离关注点

您必须将
地址作为模型向下传递给视图

在控制器中:

public ActionResult Details() 
{
   var model = new Address();
   model.Street = "Test address";

   return View(model);
}
然后在您的视图中,添加以下内容:

@model Address
这将允许视图知道它正在处理强类型的
地址
模型

然后可以使用
@Html.DisplayFor
列出视图中的所有属性,例如:

 @Html.DisplayFor(m => m.Street)
 @Html.DisplayFor(m => m.Zip)
 @Html.DisplayFor(m => m.City)
 @Html.DisplayFor(m => m.Country)

但是,最好创建一个
ViewModel
,而不是直接使用
地址
POCO。ViewModel可以从不同的层(例如数据库或Web服务)获取此信息,然后这些层可以独立地调用该层,而不是在控制器中,这允许更好地分离关注点

我不想为地址生成任何视图,只想为包含所有地址字段的POI生成一个视图。如果我在VS2013中为POI模型生成视图,它会保留地址。@mlauth-然后使用POI模型并访问其中的
地址
属性
@HtmlDisplayFor(m=>m.Address.Street)
-
如果POI有多个地址,你需要一个集合并将它们存储在一个
IEnumerable
中,然后在视图中对它们进行迭代。有没有办法自动执行此操作?@mlauth-看看MVC脚手架。我尝试了MVC脚手架。我在控制器中使用了“添加视图”选项。但是有没有办法自动生成一个完整的视图,包括所有的poi和地址字段,而不平铺我的poi对象,如果没有,我就使用AutoMapper。我不想为地址生成任何视图,只想为包含所有地址字段的poi生成一个视图。如果我在VS2013中为POI模型生成视图,它会保留地址。@mlauth-然后使用POI模型并访问其中的
地址
属性
@HtmlDisplayFor(m=>m.Address.Street)
-
如果POI有多个地址,你需要一个集合并将它们存储在一个
IEnumerable
中,然后在视图中对它们进行迭代。有没有办法自动执行此操作?@mlauth-看看MVC脚手架。我尝试了MVC脚手架。我在控制器中使用了“添加视图”选项。但是,有没有办法自动生成一个完整的视图,包括poi和地址的所有字段,而无需平展我的poi对象,如果没有,我就使用AutoMapper。