У меня динамически загружены частичные виды (зависит от «кнопки добавления»):
$.get('/Home/LoadSpread', {}, function (response) {
var newHTML = response;
$(newHTML).hide().appendTo("#Spreads").fadeIn(1000);
});
$('#loadPartialViewBtn').hide().fadeIn(1000);
Каждый частичный вид отображается в виде главной страницы:
<form method="post" action="GetInitializedBranch">
<div id="Spreads" align="center">
</div>
<input type="submit" value="Send" />
</form>
Каждый частичный вид загружаетсяпо той же модели (которая должна иметь разные значения в сообщении):
public IActionResult LoadSpread()
{
BranchView branchView = new BranchView
{
SelectorViewID = ++partialViewID,
Spreads = new List<Spread>()
};
foreach (var rate in Handlers.DataAccessHandler.GetRatesFromDB())
{
branchView.Spreads.Add(new Spread { Curr = rate.Curr });
}
return PartialView("_Spread", branchView);
}
Это моя модель частичного просмотра:
public class BranchView
{
public int BranchID { get; set; }
public string BranchName { get; set; }
public int SelectorViewID { get; set; }
public List<Spread> Spreads { get; set; }
}
Это частичное представление, которое представляет собой таблицу с уникальным вводомelements:
<table class="table table-bordered" style="margin-left: 480px; margin-top: 10px;">
<tbody>
<tr>
<td valign="middle" rowspan="2"> Currency </td>
<td style="text-align: center;" colspan="4">Cash</td>
<td style="text-align: center;" colspan="4">Non Cash</td>
</tr>
<tr>
<td>Spread Buy</td>
<td>Buy Current</td>
<td>Spread Sell</td>
<td>Sell Current</td>
<td>Spread Buy</td>
<td>Buy Current</td>
<td>Spread Sell</td>
<td>Sell Current</td>
</tr>
@{ var j = 1;}
@for (var i = 0; i < Model.Spreads.Count; i++)
{
var currencyName = Model.Spreads[i].Curr.ShortName;
var cashSpreadBuy = "cashSpreadBuy" + currencyName + Model.Spreads[i].ID;
var cashBuyCurrent = "cashBuyCurrent" + currencyName + Model.Spreads[i].ID;
var cashSpreadSell = "cashSpreadSell" + currencyName + Model.Spreads[i].ID;
var cashSellCurrent = "cashSellCurrent" + currencyName + Model.Spreads[i].ID;
var nonCashSpreadBuy = "nonCashSpreadBuy" + currencyName + Model.Spreads[i].ID;
var nonCashBuyCurrent = "nonCashBuyCurrent" + currencyName + Model.Spreads[i].ID;
var nonCashSpreadSell = "nonCashSpreadSell" + currencyName + Model.Spreads[i].ID;
var nonCashSellCurrent = "nonCashSellCurrent" + currencyName + Model.Spreads[i].ID;
<tr>
<td>
<div id="@currencyName">
@Html.DisplayTextFor(m => m.Spreads[i].Curr.ShortName)
</div>
</td>
<td>
@Html.EditorFor(m => m.Spreads[i].CashSpreadBuy,
new { htmlAttributes = new { @id = cashSpreadBuy, @type = "number", @step = "0.01", @class = "form-control" } })
</td>
<td>
<div id="@cashBuyCurrent">
@Html.DisplayTextFor(m => m.Spreads[i].CashBuyCurrent)
</div>
</td>
<td>
@Html.EditorFor(m => m.Spreads[i].CashSpreadSell,
new { htmlAttributes = new { @id = cashSpreadSell, @type = "number", @step = "0.01", @class = "form-control" } })
</td>
<td>
<div id="@cashSellCurrent">
@Html.DisplayTextFor(m => m.Spreads[i].CashSellCurrent)
</div>
</td>
<td>
@Html.EditorFor(m => m.Spreads[i].NonCashSpreadBuy,
new { htmlAttributes = new { @id = nonCashSpreadBuy, @type = "number", @step = "0.01", @class = "form-control" } })
</td>
<td>
<div id="@nonCashBuyCurrent">
@Html.DisplayTextFor(m => m.Spreads[i].NonCashBuyCurrent)
</div>
</td>
<td>
@Html.EditorFor(m => m.Spreads[i].NonCashSpreadSell,
new { htmlAttributes = new { @id = nonCashSpreadSell, @type = "number", @step = "0.01", @class = "form-control" } })
</td>
<td>
<div id="@nonCashSellCurrent">
@Html.DisplayTextFor(m => m.Spreads[i].NonCashSellCurrent)
</div>
</td>
</tr>
}
</tbody>
</table>
Я пытаюсь получить массив моделей BranchView на post (то есть BranchView [] отделения), но я понятия не имею, как это сделать:
[HttpPost]
public void GetInitializedBranch (BranchView[] branches)
{
//TODO: Collect All branches data
}
Что я должен сделать, чтобы получить результаты всех входных данных пользователей с частичным представлением и получить их как массив моделей?