Я занимаюсь практикой с MVC4. Мой практический проект - это простой вид форума/форума комментариев, который позволяет зарегистрированным пользователям и анонимным пользователям оставлять комментарии.Предварительная загрузка и отключение редактораДля
В настоящее время у меня установлен мой код, чтобы даже зарегистрированные пользователи могли вводить любое имя, которое им бы хотелось, при отправке небольшого имени + формы сообщения. Я хотел бы отключить это поведение для зарегистрированных пользователей, вместо этого используя их имя пользователя, взятое из их регистрационной информации.
В идеале, зарегистрированные пользователи будут иметь имя, которое уже имеет свое имя пользователя, загруженное в него, и оно будет недействительным. Это имя пользователя будет использоваться, когда форма проходит проверку, которая не гарантирует, что ни имя, ни сообщение не будут пустыми.
Вот мой код с точки зрения:
<div class="editor-label">
@Html.LabelFor(x => x.comment.Name)
</div>
<div class="editor-field">
@Html.ValidationMessageFor(x => x.comment.Name)
<br />
@if (User.Identity.Name=="") {
@Html.EditorFor(x => x.comment.Name)
} else {
@Html.EditorFor(x => x.comment.Name, Model.PosterName)
}
</div>
Обратите внимание, что Model.PosterName просто держит имя пользователя в виде строки. Это не пусто или пусто.
Как я могу отредактировать вторую строку EditorFor, чтобы использовать Model.PosterName как параметр по умолчанию? Должен ли я, возможно, использовать DisplayFor вместо неприменимого поведения?
Код, который я написал выше, не заполняет EditorFor любыми значениями.
Спасибо!
Спасибо за ваш ответ. Я сделал и подал имя пользователя в модель комментария в контроллере, как вы предлагали, и работает отлично. Одна вещь, которую я хотел бы указать, что ваша строка кода для представления заставляет валидацию рассматривать поле как пустое, несмотря на то, что текст заблокирован. Но использование: new {@readonly = "readonly"} делает трюк, хотя я предпочитайте отключение вашего курсора значка курсора. – Newman14922013