Как отправить строго типизированный объект модели из представления в КОНТРОЛЛЕР

#asp.net-mvc #asp.net-mvc-4 #c#-4.0 #razor

#asp.net-mvc #asp.net-mvc-4 #c #-4.0 #razor

Вопрос:

Привет, у меня есть строго типизированное ПРЕДСТАВЛЕНИЕ в MVC.

Модель отображает все данные в ПРЕДСТАВЛЕНИИ.

Как я могу отправить объект модели из этого представления со всеми данными в контроллер при отправке формы.

КОНТРОЛЛЕР 1, который отправляет объект модели

 return View(CurrentUser);
 

ПРЕДСТАВЛЕНИЕ, которое получает объект модели

 @model WebApp.Models.UserEntity

 <h4><b>Contact Information:</b></h4>
                <ul>
                    <li>
                        <h4><b> Name:- @Model.FirstName  @Model.LastName </b></h4>
                    </li>

                    <li>
                        <h4><b> Address1:- @Model.Address1</b></h4>
                    </li>

                    <li>
                        <h4><b>Address2:- @Model.Address2</b></h4>
                    </li>

                    <li>
                        <h4><b> Attention:- @Model.Attention</b></h4>
                    </li>

                    <li>
                        <h4><b> City:- @Model.City</b></h4>
                    </li>
                    <li>
                        <h4><b> State:- @Model.StateName</b></h4>
                    </li>
                    <li>
                        <h4><b> Zip:- @Model.Zip</b></h4>
                    </li>
                    <li>
                        <h4><b>HomePhone:- @Model.HomePhone</b></h4>
                    </li>
                    <li>
                        <h4><b>CellPhone:- @Model.CellPhone</b></h4>
                    </li>
                </ul>
 

Как отправить эту модель вместе с данными в КОНТРОЛЛЕР 2 в качестве параметра??

Пожалуйста, помогите с предложениями и любым возможным подходом.

Комментарии:

1. Поскольку все они доступны только для чтения, почему бы вам просто не отправить обратно первичный ключ для UserEntity? Также где ваша форма? Это может прояснить ваши намерения.

Ответ №1:

Вам нужно будет

  • заключите содержимое представления в форму, которая отправляется в Controller2.
  • добавьте что-нибудь в форму (текстовые поля, скрытые поля и т.д.), Чтобы содержать свойства модели
  • добавить кнопку отправки

Мне интересно, почему вы это делаете. Кажется странным отправлять данные на другой контроллер вместо действия на том же контроллере.

 @using (Html.BeginForm("ActionName", "Controller2")
{
     @Html.HiddenFor(model => model.FirstName)
     ...
}
 

Комментарии:

1. Из комментариев я понимаю, что нет способа отправить полный объект модели обратно со свойствами.

2. Под «вместо действия на том же контроллере» вы имеете в виду POST или GET?

3. Поскольку, как только пользователь отправит эту форму, я буду отображать другое представление на основе подтверждения этих данных.

4. Вам не нужен второй контроллер только для отображения другого представления. Несколько действий на одном контроллере могут (и обычно возвращают) возвращать разные представления.

Ответ №2:

У вас очень плохое понимание технологий, которые вы используете. Пожалуйста, изучите некоторые HTML и основы HTTP, если вы хотите использовать asp.net MVC — вы действительно не можете сделать это иначе.

Нет никакого способа (ну, никакого разумного способа) отправить модель из представления в контроллер. Представление отображает HTML. Если вы хотите, чтобы контроллер получал некоторые данные, это еще один запрос, который ваш браузер создаст при отправке формы. Эта форма должна содержать все данные, которые вы хотите, чтобы контроллер получал, и поэтому вы должны сделать это при передаче предыдущего запроса (как вы делаете в своем примере — но не элементы заголовков HTML, а элементы формы.

Комментарии:

1. Да, я новичок в MVC, забыл упомянуть об этом.

2. Нет ничего плохого в том, чтобы быть новым. Но почему бы вам не прочитать и не попробовать несколько базовых руководств, прежде чем задавать вопросы, которые на самом деле не имеют смысла?

3. вот так : blog.michaelckennedy.net/2012/01/20 /… или это weblogs.asp.net/scottgu /…