ASP.NET MVC使用包含复杂对象的模型类创建视图

时间:2015-08-24 02:36:38

标签: asp.net-mvc

我试图通过Visual Studio 2013中的“添加视图”选项将模型类映射到Person类来创建视图(使用Razor引擎)。

创建视图时,它只会创建Age,Gender,Name字段。但是,我需要一个列出每个类中所有属性的视图;即我需要一个包含以下字段的视图:AgeNameGenderEmployerNameSalaryCity,{{1 }和State

我有一个类似的类:

Country

2 个答案:

答案 0 :(得分:1)

由于您的关系是1:1,这非常简单。 您必须手动编辑视图。假设Model的类型为Person,这里有一个示例行:

<tr>
    <td>@Model.Age</td>
    <td>@Model.Name</td>
    <td>@Model.Gender</td>
    <td>@Model.JobDetailsInfo.EmployerName</td>
    <td>@Model.JobDetailsInfo.Salary</td>
    <td>@Model.AddressInfo.City</td>
    <td>@Model.AddressInfo.State</td>
    <td>@Model.AddressInfo.Country</td>
</tr>

只要您拥有这种简单的关系,这将有效,但如果您所显示的内容未能正确表示您已应用于数据结构的任何规范化,那么这将在其表面上落空。 / p>

答案 1 :(得分:0)

I slightly changed my class structure and i created partial views for commondata,jobdetails and address and used them in my main view using @Html.Partial. I was able to pass default data by creating an object instance and loading some default values and passed the entire object to the view  .The catch here is the model class which is bind to the Parent view must conatin all properties which are used for creating partial views. Pls see below

   Controller method: 
//Assign all properties for person object here
return View("ViewName", "PersonObject");

.cshtml:
@Html.Partial("ViewPath",Model.Data)
@Html.Partial("ViewPath",Model.JobDetailsInfo )
@Html.Partial("ViewPath",Model.AddressInfo )


    public class Person
    { 
    public CommonData Data
    public JobDetails JobDetailsInfo { get; set; }
    public Address AddressInfo { get; set; }
    }

    public class CommonData
    {
     public int Age { get; set }
      public string Gender { get; set; }
      public string Name { get; set; }

    }

    public class JobDetails 
    {
        public string EmployerName { get; set; }
        public string Designation { get; set; }
        public int Salary { get; set; }
    }

    public class Address 
    {
        public string City { get; set; }
        public string State { get; set; }
        public int Country { get; set; }
    }