2017-01-04 4 views
0

У меня есть две модели MainTransaction и подтранзакцииSingle View One для многих отношениях

public class MainTrasaction{ 

public int id{get;set;} 
public DateTime transDate{get;set;} 
public String transCode{get;set;} 
public String TransPoster{get;set;} 
public ICollection<SubTransaction>{get;set;} 
} 

public class SubTransaction{ 
public int id{get;set;} 
public int MainTransId{get;set;} 
public double debit{get;set;} 
public double credit{get;set;} 

} 

Я хочу объединить обе модели таким образом, что в Single Create Form, будет одна строка из MainTransaction и несколько строк SubTransaction. Таким образом, я создал ViewModel

public class Voucher{ 
public MainTransaction mt{get;set;} 
public List<SubTransaction> st {get;set} 

}

Смысл этой ViewModel должен был обрабатывать создание формы ввода, в которой одна запись MainTransaction и нескольких отчетов подтранзакции может быть одновременно вставлен. Однако, сделав приведенную выше модель обзора, я теряю ее, чтобы включить ее в мой взгляд. Любые предложения. Что мне делать.

Это действие контроллера

public ActionResult GenerateVoucher(){ 

return View(); 
} 

И Посмотреть

@model VoucherProject.Models.Voucher 

@Html.TextBoxFor(m=>m.MainTransaction.transDate) 
// And so on for all the MainTransaction fields 
// SubTransaction.. Not sure who to proceed 
/// Not sure what to do here.. 

Любые идеи. Спасибо в Advance ..

+0

Что именно проблема? Помимо включения моделей домена в вашу модель просмотра, я не вижу здесь ничего плохого. –

+0

Как создать 15 строк SubTransaction, чтобы после отправки они привязаны к соответствующей модели –

+0

Вопросы «Как мне ...» не очень хорошо подходят для Q & A-формата SO. В Интернете есть много учебников, в которых рассказывается о привязке данных MVC. Например. [здесь] (http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/), [здесь] (https://blog.codeinside.eu/2012/ 09/17/modelbinding-с-комплексообразователей объектами-в-асп-сетчатой ​​MVC /). Вам просто нужно создать свое представление таким образом, чтобы можно было динамически добавлять/удалять входы. –

ответ

0

Спросите о создании формы или представлении данных формы? Если я правильно понимаю, хочу заполнить представление с помощью ViewModel Voucher. Когда вы сделаете это, вы можете перебрать SubTransaction список в представлении, как это:

for (int i = 0; i < Model.st.Count; i++) 
{ 
    @Html.TextBoxFor(x => x.st[i].debit) 
} 

Предполагая, что вы заселили список с чем-то, это будет создавать входы для каждого элемента списка. Это форма для ввода пользователем.

Когда данные публикуемые в методу контроллера, значения будут связаны с моделью «Ваучер», и вы можете сделать foreach на List<SubTransaction> и обрабатывать их, как это:

foreach (SubTransaction item in model.st) 
{ 
    // process the SubTransaction record 
} 
+0

Но если я не заполнил список, как я тогда создаю форму, эта форма будет использоваться для добавления новых записей, поэтому исходных данных не будет. –

+0

Чтобы заставить его работать таким образом, вам нужно заполнить модель. Вы использовали объекты домена в своих ViewModels, что делает это неудобным. – markpsmith

+0

Любой альтернативный подход .. Возможно, ссылка –