2015-08-24 2 views
-1

Я пытаюсь создать представление (с двигателем Razor), отображая класс модели для Person класса через Add View опцию в Visual Studio 2013.ASP.NET MVC создать представление с классом модели, содержащей сложные объекты

Когда он создает представление, он создает только поля Age, Gender, Name. Однако мне нужно представление, в котором перечислены все свойства в каждом классе; то есть мне нужен вид, который содержит следующие поля: Age, Name, Gender, EmployerName, Salary, City, State и Country.

У меня есть аа класс, похожий на этот:

public class Person 
{ 
    public int Age { get; set } 
    public string Gender { get; set; } 
    public string Name { get; set; } 
    public JobDetails JobDetailsInfo { get; set; } 
    public Address AddressInfo { 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; } 
} 
+0

Когда вы говорите «IDE», вы имеете в виду Visual Studio? – LJNielsenDk

+1

Visual Studio 2013 –

ответ

0

создать представление вручную или использовать Наследование ... что-то вроде

public class jobdetails : person 
{ 
} 
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> 

Это будет работать до тех пор, пока у вас есть, что простые отношения, но если то, что вы показали не правильно представлять никакой нормализации примененных к структура данных, это будет падать на его лице.

+0

Спасибо Eraph..The может содержать коллекции объектов также .. Поэтому я использовал Partial views. Все эти частичные представления вызывают из одного родительского представления (более узкого cshtml), используя @ Html.Partial..Now i хотите, чтобы представление отображало данные по умолчанию всякий раз, когда это происходит. Также я хочу снова отобразить значения из представления, прочитав каждое поле (при условии, что пользователь изменил некоторые поля). любые указатели на достижение обоих поведений при использовании частичных представлений –

+0

Мое предложение состояло в том, чтобы пройти через учебные пособия, оно охватит большинство из того, что вы пытаетесь достичь, и дайте вам четкое представление о том, как работает MVC. http://www.asp.net/mvc/overview/getting-started/introduction/getting-started – Eraph

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; } 
    } 
Смежные вопросы