C# 使用ViewModel中的模型创建局部模型
我的帐户控制器上有一个设置操作,用于呈现设置视图 在Settings视图中,我收到了一个包含ChangePasswordModel的ViewModel 以下是设置视图模型:C# 使用ViewModel中的模型创建局部模型,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我的帐户控制器上有一个设置操作,用于呈现设置视图 在Settings视图中,我收到了一个包含ChangePasswordModel的ViewModel 以下是设置视图模型: public class SettingsViewModel { public ChangePasswordModel ChangePasswordModel { get; set; } } public class SettingsViewModel { public SetttingsViewModel
public class SettingsViewModel
{
public ChangePasswordModel ChangePasswordModel { get; set; }
}
public class SettingsViewModel
{
public SetttingsViewModel()
{
ChangePasswordModel = new ChangePasswordModel();
}
public ChangePasswordModel ChangePasswordModel { get; set; }
}
设置视图接收
@model XBLTools.Models.SettingsViewModel
@model XBLTools.Models.ChangePasswordModel
ChangePassword视图接收
@model XBLTools.Models.SettingsViewModel
@model XBLTools.Models.ChangePasswordModel
ChangePassword视图单独工作正常。
如何呈现传递Model.ChangePasswordModel的ChangePassword视图
我尝试了一些组合,但没有成功地得到不同的错误:
@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)
有什么想法吗?您可以传递模型属性:
@Html.Partial("ChangePassword", Model.ChangePasswordModel)
如果ChangePasswordModel
项目属性为null
,则会出现错误,因为局部视图需要一个模型。确保已将
ChangePasswordModel
属性设置为实例
或者,您可以只传递一个新的ChangePasswordModel
实例:
@Html.Partial("ChangePassword", new ChangePasswordModel())
您可以只传递模型属性:
@Html.Partial("ChangePassword", Model.ChangePasswordModel)
如果ChangePasswordModel
项目属性为null
,则会出现错误,因为局部视图需要一个模型。确保已将
ChangePasswordModel
属性设置为实例
或者,您可以只传递一个新的ChangePasswordModel
实例:
@Html.Partial("ChangePassword", new ChangePasswordModel())
您应该在控制器的设置视图模型上初始化ChangePasswordModel
public ActionResult MyAction()
{
var model = new SettingsViewModel{
ChangePasswordModel = new ChangePasswordModel()
}
return View(model);
}
然后使用:
@Html.Partial("ChangePassword", Model.ChangePasswordModel)
您应该在控制器的设置视图模型上初始化ChangePasswordModel
public ActionResult MyAction()
{
var model = new SettingsViewModel{
ChangePasswordModel = new ChangePasswordModel()
}
return View(model);
}
然后使用:
@Html.Partial("ChangePassword", Model.ChangePasswordModel)
如果在ChangePasswordModel的新实例中为空传递:
@Html.RenderPartial("ChangePassword", new ChangePasswordModel())
或者在SettingsViewModel的构造函数中实例化它:
public class SettingsViewModel
{
public ChangePasswordModel ChangePasswordModel { get; set; }
}
public class SettingsViewModel
{
public SetttingsViewModel()
{
ChangePasswordModel = new ChangePasswordModel();
}
public ChangePasswordModel ChangePasswordModel { get; set; }
}
如果在ChangePasswordModel的新实例中为空传递:
@Html.RenderPartial("ChangePassword", new ChangePasswordModel())
或者在SettingsViewModel的构造函数中实例化它:
public class SettingsViewModel
{
public ChangePasswordModel ChangePasswordModel { get; set; }
}
public class SettingsViewModel
{
public SetttingsViewModel()
{
ChangePasswordModel = new ChangePasswordModel();
}
public ChangePasswordModel ChangePasswordModel { get; set; }
}
您是否更改PasswordModel为空?是的。这是第一次呈现设置视图。
@Html.RenderPartial(“ChangePassword”,Model.ChangePasswordModel)
应该可以正常工作,您可以发布使用它时出现的错误吗?您是ChangePasswordModel null吗?是的。这是第一次呈现设置视图。@Html.RenderPartial(“ChangePassword”,Model.ChangePasswordModel)
应该可以正常工作,您可以发布在使用它时遇到的错误吗?它说:“error CS0118:'System.Web.Mvc.WebViewPage.Model是一个属性,但像类型一样使用”对不起;我误解了。只需传递模型属性即可。请注意,该属性不能为null
。它表示:“error CS0118:'System.Web.Mvc.WebViewPage.Model是一个属性,但其使用方式与类型“Sorry;我误解了。只需传递模型属性即可。请注意,属性不能为null
。这是有效的。我必须删除设置操作也接收到的参数(SettingsViewModel模型)。也许“初始操作”不需要接收模型,只需渲染为空即可。是吗?这很有效。我必须删除设置操作也接收到的参数(SettingsViewModel模型)。也许“初始操作”不需要接收模型,只需渲染为空即可。是这样吗?