Я новичок в ASP.NET MVC; Я пытаюсь создать динамическую таблицу с кнопками, которые добавляют/удаляют строки при нажатии с использованием состояний модели, а не jQuery, поэтому прямо сейчас мои слова на странице, но я смог создать только кнопку, которая удаляет последнюю добавленную строку, и я действительно хочу способ удалить определенную строку из моей таблицы, добавив параметр «удалить» к данным таблицы.
Вот код, который у меня есть прямо сейчас, который работает и удаляет последнюю добавленную строку.
Вид
@{ for (int i = 0; i < Model.ValueModel.Count; i++)
{
<div>
<table>
<tr id = "Row">
<td>
@Html.DropDownListFor(m => m.ValueModel[i].id, new SelectList(Model.ReplaceModel, "id", "Name"))
</td>
<td>
@Html.EditorFor(m => m.ValueModel[i].value)
</td>
</tr>
</table>
</div>
}
}
<button name = "submit" value = "AddLine"> Add Line </button>
<button name = "submit" value = "RemLine"> Remove Line </button>
Контроллер
[HttpPost]
public ActionResult Test(TestModel model, string submit)
{
switch (submit)
{
case "AddLine":
model.ValueModel.Add(new ValueModel());
break;
case "RemLine":
if (model.ValueModel.Count > 0)
{
model.ValueModel.RemoveAt(model.ValueModel.Count - 1);
}
}
return View(model);
}
Код работает с моими моделями, которые не важны для вопроса, что я хочу узнать, это способ удалить строку, добавив ее в третью <td> в представлении и используя аналогичное действие для
model.ValueModel.RemoveAt(model.ValueModel.Count - 1);
от корпуса выключателя «РемЛайн».
Что-то вроде этого
@{ for (int i = 0; i < Model.ValueModel.Count; i++)
{
<div>
<table>
<tr id = "Row">
<td>
@Html.DropDownListFor(m => m.ValueModel[i].id, new SelectList(Model.ReplaceModel, "id", "Name"))
</td>
<td>
@Html.EditorFor(m => m.ValueModel[i].value)
</td>
<td>
<button name = "submit" value = "RemLine"> Remove Line </button>
</td>
</tr>
</table>
</div>
}
}
<button name = "submit" value = "AddLine"> Add Line </button>
Контроллер
[HttpPost]
public ActionResult Test(TestModel model, string submit)
{
switch (submit)
{
case "AddLine":
model.ValueModel.Add(new ValueModel());
break;
case "RemLine":
if (model.ValueModel.Count > 0)
{
model.ValueModel.**BegoneLine**(The line in which the button is);
}
}
return View(model);
}
Заранее спасибо!





Вам нужно отправить идентификатор строки с помощью кнопки «удалить», а затем прочитать его в своем контроллере. Вы можете добавить такие кнопки (в каждой строке):
<button name = "submit" value = "@(i)">Remove row</button>
...
<button name = "submit" value = "@(i)">Remove row</button>
Контроллер:
public ActionResult Test(TestModel model, string submit)
{
switch (submit)
{
case "AddLine":
model.ValueModel.Add(new ValueModel());
break;
case "RemLine":
if (model.ValueModel.Count > 0)
{
model.ValueModel.RemoveAt(model.ValueModel.Count - 1);
}
break;
case string number when int.TryParse(number,out var index):
if (model.ValueModel.Count > 0)
{
model.ValueModel.RemoveAt(index);
}
break;
}
Большое спасибо! я, наконец, смог понять, что я должен там делать, я не знал, что смог создать случай переключения в контроллере, например, работа с mvc может быть такой странной, и мне определенно нужно многому научиться, еще раз спасибо, Ваш ответ мне очень помог, удачной недели!
спасибо за ваш ответ, но я боюсь, что я не могу / ** не знаю, как ** применить решение, так как сейчас случай переключения основан на названии кнопки, мне очень жаль, но не могли бы вы быть немного более конкретным в как это решить?