【问题标题】:How to send the strongly typed model object from VIEW to CONTROLLER如何将强类型模型对象从 VIEW 发送到 CONTROLLER
【发布时间】:2014-06-27 15:02:22
【问题描述】:

您好,我在 MVC 中有一个强类型视图。

模型在 VIEW 中呈现所有数据。

如何在表单提交时将此视图中的模型对象连同所有数据发送到控制器。

CONTROLLER 1 发送模型对象

return View(CurrentUser);

VIEW 接收模型对象

@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>

如何将此模型与数据一起作为参数发送到 CONTROLLER 2??

请提供建议和任何可行的方法。

【问题讨论】:

  • 因为它们都是只读字段,为什么不只发回 UserEntity 的主键呢?还有你的表格在哪里?这可能会澄清你的意图。

标签: asp.net-mvc asp.net-mvc-4 c#-4.0 razor


【解决方案1】:

你需要

  • 将视图内容包含在一个发布到 Controller2 的表单中。
  • 在表单中添加一些内容(文本框、隐藏字段等)以包含模型属性
  • 添加提交按钮

不过,我想知道您为什么要这样做。将数据发布到另一个控制器而不是同一控制器上的操作似乎很奇怪。

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

【讨论】:

  • 从 cmets 了解到,无法将完整的模型对象连同属性一起发回。
  • “而不是在同一控制器上执行操作”是指 POST 或 GET?
  • 由于一旦用户提交此表单,我将根据此数据的确认呈现不同的视图。
  • 您不需要第二个控制器来呈现不同的视图。同一控制器上的多个操作可以(并且通常确实)返回不同的视图。
【解决方案2】:

您对所使用的技术了解甚少。如果你想使用 asp.net MVC,请学习一些 HTML 和 HTTP 基础知识——否则你真的做不到。

没有办法(好吧,没有理智的方式)将模型从视图发送到控制器。视图正在呈现 HTML。如果您希望控制器接收一些数据,那完全是另一个请求 - 您的浏览器将在您提交表单时创建该请求。此表单应包含您希望控制器接收的所有数据,因此您必须在处理先前的请求时执行此操作(就像您在示例中所做的那样 - 但不是 HTML 标头元素,而是表单元素。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
  • 1970-01-01
  • 2015-02-28
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多