В MVC5 как установить текущую дату и идентификатор пользователя в представлении для отправки нового объекта

У меня есть объект, который имеет столбец userId из пользовательской таблицы и столбец отправленной даты. Когда я создаю новый объект, я хотел бы использовать

@Html.HiddenFor(m => m.submitteddate)
@Html.HiddenFor(m => m.SubmittedById, User.Identity.GetUserId())

получить текущую дату и идентификатор пользователя, я пробовал

 @Html.HiddenFor(m => m.submitteddate, DateTime.Now.ToString())
 @Html.HiddenFor(m => m.SubmittedById, User.Identity.GetUserId())

но это не сработало.

каков наилучший способ сделать это? Есть ли другой способ сделать это в представлении или мне следует установить переменные в методах получения или отправки контроллера модели или контроллера?

Я использую mvc5, синтаксис бритвы с Entity Framework 6 и С#.


person Bob    schedule 23.10.2013    source источник
comment
Вы должны установить их в контроллере на почте. Установка идентификатора пользователя в скрытом поле может вызвать проблемы с безопасностью, поскольку конечный пользователь сможет изменить его до того, как он будет отправлен вам обратно.   -  person Mike Norgate    schedule 23.10.2013
comment
Однако как мне проверить свою модель, следует ли удалить требуемую аннотацию для этих полей в моем объекте?   -  person Bob    schedule 23.10.2013
comment
Как вы сейчас проверяете свою модель?   -  person Mike Norgate    schedule 23.10.2013
comment
У меня есть столбец System.Datetime, который требуется по умолчанию, и представленная строка, которая требуется в моей модели. В моем контроллере я просто проверяю, если (ModelState.IsValid) {insert save}   -  person Bob    schedule 23.10.2013
comment
Я бы удалил необходимые атрибуты. Вы контролируете, когда объект сохраняется, вы можете убедиться, что в вашем контроллере SubmittedDate и SubmittedById установлены до сохранения   -  person Mike Norgate    schedule 23.10.2013
comment
Спасибо за быстрый ответ!   -  person Bob    schedule 23.10.2013
comment
Может быть, собрать это в ответ @MikeNorgate?   -  person Gert Arnold    schedule 24.10.2013


Ответы (1)


Собираю мои предыдущие комментарии в ответ:

Установка идентификатора пользователя в скрытом поле в HTML создаст проблему безопасности, поскольку конечный пользователь сможет изменить идентификатор, выдавая себя за другого пользователя.

Чтобы избежать этой проблемы, установите submitdate и SubmittedById в вашем контроллере после обратной отправки. Таким образом, вы можете быть уверены, что значения установлены и являются правильными значениями.

person Mike Norgate    schedule 23.10.2013
comment
Вы упомянули, что я не должен устанавливать идентификатор пользователя в скрытом поле, но нормально ли, чтобы идентификатор пользователя попадал в скрытое поле при действии редактирования? - person Bob; 24.10.2013
comment
Вы никогда не должны делать идентификатор пользователя доступным в клиенте в любой форме, которая позволяла бы его редактировать. Если бы мне удалось получить идентификатор другого пользователя, я мог бы внести изменения, притворяясь кем-то другим. - person Mike Norgate; 24.10.2013
comment
Но тогда было бы нормально использовать userId для ссылки на страницу редактирования пользователя, я предполагаю, что вы скажете «нет». Но тогда как мне это сделать, должен ли я использовать имя пользователя для запроса пользователя? - person Bob; 24.10.2013