gpt4 book ai didi

asp.net-mvc - MVC 的默认 _ChangePasswordPartial View 模型

转载 作者:行者123 更新时间:2023-12-04 04:34:52 26 4
gpt4 key购买 nike

当使用 VS2013 并创建一个新的 Web 项目(MVC5/.net 4.5/EF6)时,默认项目模板带有一个标准的 AccountController,它实现了“管理”操作。
据我所知,没有显式传递给管理 View 的 View 模型(实际上, View 本身没有强类型模型)。

事情是;管理 View 内部是以下行;

@Html.Partial("_ChangePasswordPartial")

在查看该特定 View 时,它会显示一个强类型 View 模型:
@model MyProject.Models.ManageUserViewModel

然而,在项目的任何地方,我都找不到这个 View 模型被填充或发送到那个局部 View 。有人能告诉我 View 从哪里获取这个 View 模型(以及 View 模型是从哪里构造的)吗?

原因是;我正在尝试修改“管理” View 以采用我自己的 View 模型,然后想将该 View 模型的属性传递给“_ChangePasswordPartial”,所以它看起来像这样:
public ActionResult Manage()
{
CustomViewModel viewModel = bLogic.CreateViewModel();
viewModel.ChangePasswordViewModel = bLogic.CreatePasswordViewModel();
return View(viewModel);
}

然后在我的“管理” View 中,有:
@Html.Partial("_ChangePasswordPartial", Model.ChangePasswordViewModel)

最佳答案

我认为您的问题在于了解该模型的用途。

“但在项目中,我找不到这个 View 模型被填充或发送到那个局部 View ”

无需填充 _ChangePasswordPartial View 模型,因为最初在局部 View (GET) 中没有使用数据。

提交表单 (POST) 后使用 View 模型。它在 中创建/填充AccountController.Manage(ManageUserViewModel 模型) 根据用户提交的数据,这是通过模型绑定(bind)器自动完成的(您也可以创建自定义绑定(bind)器)。

管理(ManageUserViewModel 模型)然后验证模型并最终用于在模型有效的情况下更改/添加用户密码。如果模型状态无效,模型将返回到 管理 View ,以及用于显示验证错误的模型状态:

// If we got this far, something failed, redisplay form
return View(model);

这将返回 管理 View ,然后调用 _ChangePasswordPartial View ,它现在固有地填充了 ManageUserViewModel 模型。

现在为什么没有模型从 Manage View 显式传递给 Partial ?

很简单,局部 View 继承了父 View 的模型: In MVC do partial views inherit the models of their Parent views?

关于asp.net-mvc - MVC 的默认 _ChangePasswordPartial View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19896942/

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