У меня есть представление, модель которого представляет собой список настраиваемых типов, и я хочу, чтобы изменения POST выполнялись только для одного элемента List (model [i]), , Это сам по себе POST работает, за исключением того, значение того, что первоначально в модели и не обновленное значение из входногоASP.NET Core POST для контроллера с одним элементом из модели списка представлений
View модельной Декларация
@model List<Translation2>
типа Translation2 в (F #)
type Translation2 = {
Key: string;
RowKey: string;
Value: string;
English: string;
}
В Просмотр с одного объекта submit
@model List<Translation2>
<form asp-controller="Home" asp-action="Translate" method="POST" >
<table>
<thead>
<th>
<h2>Key</h2>
</th>
<th>
<h2>English</h2>
</th>
<th>
<h2>Translated</h2>
</th>
</thead>
<tbody>
@for(var i = 0; i < Model.Count(); i++)
{
<tr>
<div>
<td class="key-col">
<p style="font-size:large">@Model[i].Key</p>
@Html.HiddenFor(m => m[i].RowKey)
</td>
<td class="val-col">
<input class="fill-void" type="text" asp-for="@Model[i].English" readonly />
</td>
<td class="val-col">
<input class="fill-void" type="text" asp-for="@Model[i].Value" />
</td>
<td>
<a href="@Url.Action("Translate", "Home", new {[email protected][i].RowKey, [email protected][i].Key, [email protected][i].Value })" >Save Translation</a>
</td>
</div>
</tr>
}
</tbody>
</table>
</form>
Я также попытался просто P ОСТ весь список за ASP.NET Core 1.0 POST IEnumerable<T> to controller но получит
ArgumentNullException: Value cannot be null.
Parameter name: source
Count
MoveNext in Translate.cshtml
@for(var i = 0; i < Model.Count(); i++)
вид с представлением весь список
@model List<Translation2>
<form asp-controller="Home" asp-action="Translate" method="POST" >
<table>
<thead>
<th>
<h2>Key</h2>
</th>
<th>
<h2>English</h2>
</th>
<th>
<h2>Translated</h2>
</th>
</thead>
<tbody>
@for(var i = 0; i < Model.Count(); i++)
{
<tr>
<div>
<td class="key-col">
<p style="font-size:large">@Model[i].Key</p>
@Html.HiddenFor(m => m[i].RowKey)
</td>
<td class="val-col">
<input class="fill-void" type="text" asp-for="@Model[i].English" readonly />
</td>
<td class="val-col">
<input class="fill-void" type="text" asp-for="@Model[i].Value" />
</td>
<td>
<button type="submit">Save Translation</button>
</td>
</div>
</tr>
}
</tbody>
</table>
</form>
Я действительно хотел бы знать, как решить обе стороны, если это возможно, но решение ибо либо будет делать в этот момент.
не видя форму в условии экса mple. Как вы отправляете его в действие? Save is get a get – Nkosi
Последний TD - это @Url.Действие, которое было для одного лица представить Существует также форма упаковки таблицу <форма жерех-контроллер = «Главная» жерех действия = «Перевести» метод = «POST»> который я использовал Чтобы отправить форму в целом – PhilWolf91
Это действие выполняет GET, а не POST. значение в ссылке не изменяется после рендера при обновлении поля ввода. Предложение. оберните каждый 'tr' в его собственную форму, которая отправляется в действие, ожидающее единственную модель, а не коллекцию. – Nkosi