C# 使用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

我的帐户控制器上有一个设置操作,用于呈现设置视图

在Settings视图中,我收到了一个包含ChangePasswordModel的ViewModel

以下是设置视图模型:

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模型)。也许“初始操作”不需要接收模型,只需渲染为空即可。是这样吗?