Используйте сетку MVCContrib для редактирования
-
05-07-2019 - |
Вопрос
Я только начал использовать сетку MVCContrib в тестовом проекте. Мне трудно найти информацию о том, как использовать его для редактирования / обновления / удаления.
Может ли кто-нибудь указать мне информацию о том, как перевести строку в режим редактирования, или, если для этой сетки нет такого, обсудите рекомендации по редактированию данных списка в MVC.
Решение
Похоже, что MVCContrib - это простой способ создать таблицу HTML из коллекции объектов модели. Похоже, что он не имеет возможности поместить строку в edit / update / delete & Quot; mode & Quot; похож на GridView WebForms.
Тем не менее, похоже, что вы можете справиться с этой функциональностью так, как хотите. Если вы хотите перейти на отдельную страницу в режиме редактирования, просто поместите ссылку в один из столбцов с идентификатором этой строки. Следующая информация взята непосредственно из:
Другие советы
Вы можете добавить режим редактирования, настроив способ отображения ячейки. Я использую следующий метод расширения:
public static IGridColumn<T> Action<T>( this IGridColumn<T> column, Func<T, string> viewAction, Func<T, string> editAction, Func<T,bool> editMode )
{
column.CustomItemRenderer = ( context, item ) => context.Writer.Write( "<td>" + ( editMode( item ) ? editAction( item ) : viewAction( item ) ) + "</td>" );
return column;
}
Это позволяет указать способ визуализации столбца в режиме просмотра и в режиме редактирования. Режим определяется с помощью третьего действия, которое должно иметь значение true для строки, которую вы хотите редактировать.
Использование этого в представлении выглядело бы примерно так:
<%= Html.Grid( Model.Items ).Columns( column => {
column.For( x => x.Name ).Action(
item => Html.ActionLink( item.Name, "SomeAction" ),
item => Html.TextBox( "Item.Name", item.Name ),
item => ( Model.SelectedItem == item ) );
} )
.Empty("No items found.")
%>
Вы можете использовать один и тот же шаблон для отображения ссылок действий (редактировать, применять, отменять и т. д.) в ячейке. Если вы хотите редактировать несколько строк одновременно, убедитесь, что имена полей уникальны.