#c# #asp.net-mvc-4
#c# #asp.net-mvc-4
Вопрос:
У меня есть обычная страница списка данных, где мои данные взяты из базы данных SQL
когда я захожу на обычную страницу «Редактировать», чтобы изменить имя и другие параметры записи, я попытался скрыть поле идентификатора, потому что я не хочу, чтобы пользователь видел идентификатор или изменял его, и я получил следующую ошибку: dbupdateconcurrencyexception!!! и это отображается на:
db.SaveChanges();
если я верну поле идентификатора в нормальное состояние (где пользователь может его изменить), оно будет работать нормально!!!
итак, как я могу скрыть или сделать поле идентификатора доступным только для чтения без этой ошибки!!!
система по умолчанию используется:
<div class="editor-label">
@Html.LabelFor(model => model.Identifier)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Identifier)
@Html.ValidationMessageFor(model => model.Identifier)
</div>
поэтому, чтобы иметь возможность сделать его готовым, я использовал только:
@Html.TextBoxFor(model => model.Identifier, new { disabled = "disabled", @readonly = "readonly" })
Комментарии:
1. Как вы скрываете поле идентификатора в HiddenFor(x=>x.id ) ?
2. Как вы скрываете идентификатор? используете ли вы Html. HiddenFor?
3. пожалуйста, покажите свою разметку cshtml
4. «итак, как я могу скрыть или сделать поле идентификатора доступным только для чтения без этой ошибки !!!» — это не то, как работают HTTP и безопасность. Вам необходимо убедиться, что клиент, публикующий объект, имеет надлежащие разрешения для изменения объекта, идентифицированного по опубликованному идентификатору.
Ответ №1:
Если вы хотите опубликовать что-то на контроллере, вам нужно заполнить его по значению. Если вы не хотите показывать его пользователю, напишите это:
@Html.HiddenFor(model => model.Identifier;
Отключить текстовое поле также не отправляет данные, поэтому вам также нужно написать hidden.