Ошибка при скрытии поля идентификатора на странице редактирования

#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.