Я хочу создать вывод с несколькими строками данных в заполненных текстовых ящиках, которые являются начальными только для чтения, каждая с кнопкой "Редактировать" в конце. Это редактирование позволит этой строке стать редактируемой, оставаясь на одной странице (без нового окна, которое по умолчанию является MVC), а затем, когда все изменения завершены, кнопка отправки внизу страницы сохранит данные в базе данных. @Html.DisplayFor()
будет отображаться только как чтение, но для его редактирования создается новая страница.
Если @Html.DisplayFor()
то нажатие на edit может преобразовать эту строку из @Html.DisplayFor()
в @Html.EditorFor()
это было бы здорово.
Вот некоторые фрагменты кода:
@model IEnumerable<EnterAdv.Models.Person>
@using (Html.BeginForm()){
<fieldset>
<table>
@foreach (var item in Model)
{
<tr>
<td
class="styleDeptNames">@Html.EditorFor(modelItem => item.FirstName)
@Html.ValidationMessageFor(model => item.FirstName)
</td>
<td
class="styleFMLNames">@Html.EditorFor(modelItem => item.LastName)
@Html.ValidationMessageFor(model => item.LastName)
</td>
<td class="styleEdit"><input type="button" value="Edit"/></td>
</tr>
}
</table>
</fieldset>
Как вы можете видеть сейчас, это EditorFor()
. Если у этого метода была перегрузка, которая позволяла переключаться между чтением и редактировать, это было бы здорово, но я не вижу этого. Но в нижней строке я должен остаться на одной странице для редактирования.
Я использую ActionResult Index()
View, так как он перечисляет данные таблицы.
вы можете переключать чтение только с помощью jquery
$('.clsInput').attr('readonly', 'readonly');
и удалить его
$('.clsInput').removeAttr('readonly');