gpt4 book ai didi

asp.net-mvc - MVC中如何跨 View 传递模型数据?

转载 作者:行者123 更新时间:2023-12-02 09:23:15 24 4
gpt4 key购买 nike

我正在尝试弄清楚如何跨 View 传递模型

这就是我正在做的事情,我有一个 Register、RegisterConfirm、RegisterComplete View 。

用户从注册开始,填写信息,单击继续,然后发布到 RegisterConfirm,在其中单击复选框同意隐私政策,然后发布到 RegisterComplete,后者根据第一个注册 View 中的模型创建用户。

代码:

        [GET("Account/Register")]        public ActionResult Register()        {            return View();        }        [POST("Account/Register/Confirm")]        public ActionResult RegisterConfirm(RegisterModel model)        {            if (ModelState.IsValid)            {                return View(model);            }            else { return View("Register", model); }        }        [POST("Account/Register/Complete")]        public ActionResult RegisterComplete(RegisterModel model, bool agree)        {            if (agree) {                 // Create User            }            return View("Register", model);        }

查看表单

Register:    @using (Html.BeginForm("RegisterConfirm", "Account", FormMethod.Post, new { @id = "create" }))    {Register Confirm:    @using (Html.BeginForm("RegisterComplete", "Account", FormMethod.Post, new { @id = "create" }))    {

问题是,当我进入 RegisterComplete 时,模型值是空的...有什么想法吗?或者这不可能吗?或者这是否可行,我需要仔细检查我的注册完成?

最佳答案

您的 RegisterConfirm View 是否使用仅显示元素来显示注册信息?如果是这样,MVC 将无法绑定(bind)数据来填充模型。

您需要将模型呈现为输入元素,即使它们是隐藏的,以便模型绑定(bind)器可以填充 RegisterModel(您可以将属性呈现为“数据保留”的隐藏元素和用于显示的输出元素)。

如果您使用的是 Input 元素,请检查这些元素的名称是否与 RegisterModel 的属性名称匹配,否则模型绑定(bind)程序将无法填充 RegisterModel。

如果出于某种原因无法将数据放入 RegisterConfirm View 中的 Input 元素中,则需要将数据存储在服务器端的某个位置,无论是在 Session State 中(还是在 TempData 中,无论如何它都使用 Session State) )或在某种描述的数据库中。

在服务器端存储模型的优点是,您可以确保在将数据发送到客户端和接收回来之间数据没有被篡改。

关于asp.net-mvc - MVC中如何跨 View 传递模型数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6801950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com