我的帐户控制器上有一个设置操作,用于呈现设置视图。
在设置视图中,我收到了一个包含ChangePasswordModel的ViewModel。
这是SettingsViewModel:
public class SettingsViewModel
{
public ChangePasswordModel ChangePasswordModel { get; set; }
}
设置视图收到
@model XBLTools.Models.SettingsViewModel
ChangePassword View收到
@model XBLTools.Models.ChangePasswordModel
ChangePassword视图单独运行正常。 如何渲染ChangePassword视图传递Model.ChangePasswordModel?
我尝试了一些组合而没有成功获得不同的错误:
@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)
有什么想法吗?
答案 0 :(得分:3)
如果在新的ChangePasswordModel实例中传递了null:
@Html.RenderPartial("ChangePassword", new ChangePasswordModel())
或者在SettingsViewModel的构造函数中实例化它:
public class SettingsViewModel
{
public SetttingsViewModel()
{
ChangePasswordModel = new ChangePasswordModel();
}
public ChangePasswordModel ChangePasswordModel { get; set; }
}
答案 1 :(得分:1)
您只需传递您的模型属性:
@Html.Partial("ChangePassword", Model.ChangePasswordModel)
如果ChangePasswordModel
属性为null
,则会出现错误,因为局部视图需要模型。
确保已将ChangePasswordModel
属性设置为实例。
或者,您只需传递一个新的ChangePasswordModel
实例:
@Html.Partial("ChangePassword", new ChangePasswordModel())
答案 2 :(得分:1)
您应该在控制器中的设置视图模型上初始化ChangePasswordModel。
public ActionResult MyAction()
{
var model = new SettingsViewModel{
ChangePasswordModel = new ChangePasswordModel()
}
return View(model);
}
然后使用:
@Html.Partial("ChangePassword", Model.ChangePasswordModel)