2016-06-01 10 views
0

мне нужно:HtmlBeginCollectionItem Get Current Item

  1. Асесс/Client/Создать
  2. Добавить динамически частично Просмотры (/ Product/Card) и связать их с Client.Products
  3. В каждом частичном виде, когда я нажмите на кнопку, чтобы открыть загрузочные модальные окна, где я могу установить информацию о продукте
  4. Закройте модальные и отразите изменения модального отражения в продукте карты.

Проблема заключается в следующем: как изменить информацию о продукте в другом представлении (кроме Карточки) и отразить продукт карты?

@using (Html.BeginCollectionItem("Products")) 
{ 
    @Html.HiddenFor(model => model.ClientID) 
    @Html.HiddenFor(model => model.ProductID) 


    <div class="card"> 
     <img class="card-img-top" src="http://macbook.nl/wp-content/themes/macbook/images/png/iphone318x180.png" alt="Grupo Logo"> 
     <div class="card-block"> 
      <h4 class="card-title">@Model.Name</h4> 
      <p class="card-text">@Model.Desc</p> 
      <div class="btn-group"> 
       <button type ="button" class="btn btn-primary open-modal" data-path="/Product/Edit/@Model.ProductID">Edit</button> 
       <button type="button" class="btn btn-primary open-modal" data-path="/Product/Features/@Model.ProductID">Features</button> 
      </div> 
     </div> 
    </div> 

} 

enter image description here

+0

Какая у вас проблема? Каков результат атрибутов 'data-path'? –

+0

Это/Product/Edit/0, потому что в этом представлении модель не сохраняется EF, поэтому мне нужно передать объект-объект методу редактирования? – Rieth

+0

Его немного непонятно, что вы пытаетесь сделать здесь. 'BeginCollectionItem()' предназначен для редактирования элементов в коллекции (и их возможности динамически добавлять и удалять), так почему у вас есть ссылка для перехода на другую страницу для их редактирования (просто отредактируйте их на текущей странице)? И как вы могли бы перейти на другую страницу для редактирования или просмотра функций того, чего еще нет. –

ответ

0

Вы можете сделать это еще один вид (или динамической загрузкой другого вида в модальный. Объект не был создан, и так как вы используете BeginCollectionItem() для создания новых элементов, любые других вы использовали бы не тот же самый Guid, созданный этим помощником, так что вы не смогли бы совместить элементы коллекции.

Вместо этого включите «другие» свойства в частичном, но поместите их в скрытый элемент который отображается как модальный, когда вы нажимаете на прикладом дополнения.

Базовая структура парциальное для добавления/редактирования продукт будет

<div class="product"> 
    @using (Html.BeginCollectionItem("Products")) 
    { 
     @Html.HiddenFor(m => m.ClientID) 
     @Html.HiddenFor(m => m.ProductID) 
     <div class="card"> 
      .... 
      <button type ="button" class="btn btn-primary edit">Edit</button> 
     </div> 
     // Modal for editing additional data 
     <div class="modal"> 
      @Html.TxtBoxFor(m => m.SomeProperty) 
      @Html.TxtBoxFor(m => m.AnotherProperty) 
      .... 
     </div> 
    } 
</div> 

И затем обрабатывать пуговицы .click() событие (используя делегирование, так как парциальные будет динамически добавляемые к представлению), чтобы отобразить связанный с ним (предполагается, что у вас есть элемент <div id="products">, который является контейнером для всех продуктов)

$('#products').on('click', '.edit', function() { 
    var modal = $(this).closest('.product').find('.modal'); 
    modal.show(); // display the modal 
});