2013-07-19 2 views
0

enter image description here Как сохранить две сущности из одного представления. Предположим, что у меня есть две сущности Entities Party и Person with One to Many. Теперь мне нужно сохранить обе сущности из Party View. Я использую ASP.NET MVC4.Сохранить два объекта из одного вида

public partial class Cm_Opt_Pty_Party_S 
{ 
    public Cm_Opt_Pty_Party_S() 
    { 
     this.Cm_Opt_Psn_Person_S = new HashSet<Cm_Opt_Psn_Person_S>(); 
    } 

    public int Pty_ID { get; set; } 
    public Nullable<int> Pty_PARTYTYPECODE { get; set; } 
    public string Pty_FULLNAME { get; set; } 
    public string Pty_GOVTID { get; set; } 
    public Nullable<int> Pty_GOVTIDTC { get; set; } 
    public Nullable<int> Pty_GOVTIDSTAT { get; set; } 

    public virtual ICollection<Cm_Opt_Psn_Person_S> Cm_Opt_Psn_Person_S { get; set; } 
} 
+0

Нам нужно больше деталей. В чем проблема, с которой вы сталкиваетесь? как выглядит «Партия» и «Личность». Вам нужно показать, чтобы создать модель представления, содержащую оба объекта? – James

+0

см. Ниже ответ, я добавил, это мой пример кода. здесь мое лицо связано с партией – Kashif

+0

Вместо того, чтобы публиковать ответ, вы должны отредактировать свой вопрос. можете ли вы показать свою модель? Из того, что вы сказали, это звучало как «вечеринка», содержавшая список «Человек». Что именно не так с вашим кодом, вы получаете сообщение об ошибке? Если да, то какая ошибка? Чтобы получить разумные ответы, дайте все необходимые детали. – James

ответ

1

Что вы можете сделать, это создать ViewModel Этот класс будет содержать соответствующие свойства, необходимые для создания как сущности.

Затем вместо этого вы установите View на ViewModel и передадите это контроллеру.

Если вы хотите сохранить объекты, вы можете создать отдельные объекты и сохранить их.

1

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

Ваш контроллер доставляет объект Party вашему представлению для отображения информации Party. Используя цикл, вы можете отображать элементы, содержащиеся в коллекции.

@foreach(var m in Model.Persons) 
{ 
    @Html.DisplayFor(model=>m.FirstName) 
    @Html.DisplayFor(model=>m.Surname) 
} 

Если вы хотите добавить больше элементов в коллекции, вам нужно будет вынести частичный вид или новый вид, содержащий форму для добавления Person. Он будет сильно типизированным, как Person модели и действие контроллера ПОЛУЧАТЬ пост будет ожидая Person

Если, например, Person просто была FirstName, Surname и PartyId формы будут использовать эти помощник на вашем взгляде

@Html.TextboxFor(m=>m.FirstName) 
@Html.TextboxFor(m=>m.Surname) 
@Html.TextBoxFor(m=>m.PartyId) 

Затем вы отправляете это обратно своему контроллеру и имеете логику добавления человека в коллекцию. Затем верните представление с помощью модели Party, содержащей недавно добавленное лицо в коллекции Persons.

Используя @Ajax.BeginForm или какой-либо пользовательский Jquery/Javascript, вы можете обработать этот асинхронный процесс, чтобы предотвратить обновление страницы во время процесса.

Если вы не хотите этого делать, другим вариантом является EditorTemplates. См. Здесь, например: ASP.NET MVC LIST and Create in same view

+0

проблема заключается в том, что у меня есть Сторона, содержащая список Person. так как я могу сохранить данные из партийного вида. все, что вы написали выше, вполне нормально, но это только для отображения, предположим, что мне нужно создать нового человека. что-то вроде

@Html.EditorFor(model => model.Person_S.FIRSTNAME) @Html.ValidationMessageFor(model => model.Person.FIRSTNAME)
Kashif

+0

, но я не могу писать так

@Html.EditorFor(model => model.Person_S.FIRSTNAME) @Html.ValidationMessageFor(model => model.Person.FIRSTNAME)
, потому что человек является Icollection.также я не могу петли в противном случае, он создаст список шаблонов html. – Kashif

+0

Что такое People.Person? здесь Люди - это коллекция, но в этой коллекции у меня нет Человека. – Kashif

Смежные вопросы