Добавить новую строку для новой записи в конец таблицы
У меня есть таблица данных, которую я отображаю в режиме массового редактирования, поэтому все строки можно редактировать одновременно. Следующий код прекрасно работает для редактирования существующих данных:
Row
Parent
@for (int i=0;i< Model.Config.Count;i++)
{
@Html.HiddenFor(m => Model.Config[i].ConfigurationId)
@Html.EditorFor(m=>Model.Config[i].RowNumber)
@Html.EditorFor(m=>Model.Config[i].Parent)
}
Так как я'Используя цикл for, Razor заботится об изменении имен всех отображаемых элементов, чтобы моя модель правильно связывалась с моим контроллером.
Я хочу добавить кнопку, чтобы добавить новую запись. Я знаю, что могу выполнить публикацию назад к действию, добавить пустую запись в модель, а затем повторно отобразить представление с обновленной моделью.
То, что я хотел бы сделать, это выполнить эту асинхронную работу с использованием некоторого JavaScript вместо этого. Пока что я планирую создать действие, которое будет возвращать новую визуализированную строку на основе последнего индекса (последний индекс хранится в скрытом поле hNextConfigIndex).
действие
public ActionResult GetNewRow(string rowType, int index)
{
ViewBag.RowType = rowType;
ViewBag.Index = index;
Document t = new Document();
if (rowType == "Config")
{
t.Config = new List();
t.Config.Add(new Configuration());
}
else if (rowType == ".....")
{
}
return View("_NewRows", t);
}
Посмотреть
@model Data.Document
@{
Layout = null;
}
@if (ViewBag.RowType=="Config")
{
for(int i=ViewBag.Index;i Model.Config[i].ConfigurationId)
@Html.EditorFor(m=>Model.Config[i].RowNumber)
@Html.EditorFor(m=>Model.Config[i].Parent)
}
}
Действие работает, но мнение, конечно, нет. Существует только одна пустая фиктивная запись, поэтому, конечно, индекс i (где я> 0) не будет существовать.
Я уверен, что есть другие способы сделать это. Я мог бы просто скопировать последнюю строку, используя javascript, и изменить значения, но мне пришлось бы сделать много жесткого кодирования в javascript таким образом.