У меня есть пользователи, которые заполняют информацию своего профиля где-то на моем сайте, используя AspNetSqlProfileProvider, поставляемый с IDE.
Я разрешаю своим пользователям редактировать свой профиль в любое время, перейдя на страницу редактирования профиля, где автоматически заполняется форма для редактирования их профиля. В настоящее время я делаю это с помощью ViewBag для отправки каждой отдельной части профиля пользователя из моего контроллера в представление (адрес и город, например):
Контроллер получить:
ViewBag.address = CustomProfile.GetUserProfile(User.Identity.Name).Address;
ViewBag.city = CustomProfile.GetUserProfile(User.Identity.Name).City;
Вид:
<div class="editor-field">
@Html.TextBox("Address", (string)ViewBag.address)
</div>
<div class="editor-field">
@Html.TextBox("City", (string)ViewBag.city)
</div>
Пост контроллера:
public ActionResult ChangeProfile( FormCollection favorites )
{
CustomProfile profile = CustomProfile.GetUserProfile();
profile.Address = favorites["Address"];
profile.City = favorites["City"];
profile.Save();
return RedirectToAction("Profile");
}
Вышеописанное прекрасно работает для редактирования профилей, оно очень плавное с точки зрения моего пользователя (хотя из чтения вопросов / ответов в Интернете выясняется, что я должен использовать ViewModel, не совсем уверенный в том, как сделать переход, - произошел сбой) ,
Когда мой пользователь заходит на «оформление заказа» с веб-сайта (он совершает покупки), ему предоставляется экран, который позволяет ему вводить окончательную информацию, которая позволяет ему совершить покупку. Давайте назовем это «Страница заказа». Эти данные включают в себя имя, адрес, данные кредитной карты и т. Д. Некоторые из этих элементов информации совпадают с информацией на странице профиля веб-сайта.
Я хочу иметь возможность автоматически заполнять некоторые детали на этой странице заказа (имя, адрес), оставляя некоторые поля пустыми (кредитная карта - поэтому пользователь должен заполнять эти данные каждый раз, когда они посещают страница заказа).
Как работает страница заказа, как описано в MVC Store Tutorial . Когда отображается страница заказа, она отображает форму, используя:
@Html.EditorForModel()
Это замечательно и позволяет вам редактировать детали, указанные в модели Заказа, и позволяет проводить проверку данных (требуется имя, адрес, номера кредитной карты, правильный формат электронной почты и т. Д.), но я не могу понять, как заполнить определенные поля на этой странице заказа данными из профиля моего пользователя.
Я попытался создать новую ViewModel, которая использует только информацию, содержащуюся в моем профиле, но я не имею четкого представления о том, что необходимо, потому что я не получаю желаемый конечный результат.
Я решил использовать только модель заказа в качестве информации своего профиля, но этого недостаточно, потому что я хочу, чтобы в обоих случаях была доступна другая информация.
Я рассмотрел возможность использования информации профиля в качестве модели заказа, но я хочу, чтобы мои пользователи имели возможность хранить информацию профиля отдельно от той информации, которую они используют для фактического размещения заказов.
Я думаю, что мне нужно знать конкретно, чтобы решить мою проблему: как мне автоматически заполнить определенные поля при использовании "@ Html.EditorForModel ()"?
Любая другая помощь в моей общей ситуации была бы отличной, я очень открыт для любых советов, которые упростили бы мой поток (такое ощущение, что я усложняю себе, чем мне нужно, и я нахожусь в точке, где сотрудничество будет ощущаться как глоток свежего воздуха).