Razor Partial with Model from ViewModel

本文关键字:from ViewModel Model with Partial Razor | 更新日期: 2023-09-27 18:09:11

我有一个设置操作在我的帐户控制器渲染设置视图。

在Settings View中,我接收到一个ViewModel,其中包括ChangePasswordModel。

这里是SettingsViewModel:

public class SettingsViewModel
{
    public ChangePasswordModel ChangePasswordModel { get; set; }
}

设置视图接收

@model XBLTools.Models.SettingsViewModel

ChangePassword View接收

@model XBLTools.Models.ChangePasswordModel

单独使用ChangePassword视图可以正常工作。如何渲染传递Model.ChangePasswordModel的changepasswordview ?

我尝试了一些组合,但没有成功得到不同的错误:

@Html.RenderPartial("ChangePassword", (XBLTools.Models.ChangePasswordModel)(Model.ChangePasswordModel))
@Html.RenderPartial("ChangePassword", Model.ChangePasswordModel)
@Html.Partial("ChangePassword", (XBLTools.Models.ChangePasswordModel)(Model.ChangePasswordModel))
@Html.Partial("ChangePassword", Model.ChangePasswordModel)

任何想法?

Razor Partial with Model from ViewModel

如果为null,则传入一个新的ChangePasswordModel实例:

@Html.RenderPartial("ChangePassword", new ChangePasswordModel())

或者在SettingsViewModel的构造函数中实例化它:

public class SettingsViewModel
{
    public SetttingsViewModel() 
    {
        ChangePasswordModel = new ChangePasswordModel();
    }
    public ChangePasswordModel ChangePasswordModel { get; set; }
}

应该在控制器的settings视图模型上初始化ChangePasswordModel

public ActionResult MyAction()
{
   var model = new SettingsViewModel{
          ChangePasswordModel = new ChangePasswordModel()
       }
   return View(model);
}

然后使用:

@Html.Partial("ChangePassword", Model.ChangePasswordModel)

你可以传递你的model属性:

@Html.Partial("ChangePassword", Model.ChangePasswordModel)

如果ChangePasswordModel属性是null,你会得到一个错误,因为部分视图需要一个模型。
确保您已经将ChangePasswordModel属性设置为实例。

或者,您可以传递一个新的ChangePasswordModel实例:

@Html.Partial("ChangePassword", new ChangePasswordModel())