【问题标题】:ASP.NET MVC Multiple Partial Views in 1 View Model BindingASP.NET MVC 1 视图模型绑定中的多个部分视图
【发布时间】:2011-10-21 14:09:24
【问题描述】:

我在处理 ASP.NET MVC3 模型绑定中的用户注册时遇到问题。

基本上,我有一个 ViewModel,它由 UserDetails(姓名、身份、dob 和其他东西)和一个可重用的 ViewModel、Address 组成。

所以,UserDetails 类也会携带一个 Address 类。

然后,我创建了一个将模型绑定到 Address ViewModel 的局部视图,以便它也可以重复使用。

看来,这就是我所做的:@Html.Partial("CommonAddress")

但是,在创建用户时,我根本无法检索地址,因为它仍然为空。有没有办法解决这个问题?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 razor


    【解决方案1】:

    将您的地址模型传递给部分,就像

    @Html.Partial("CommonAddress", Model.Address)
    

    如果您还没有模型,请将默认/空模型从控制器编辑操作(处理 GET HTTP 请求的操作)传递到视图。

    【讨论】:

    • 如果我的情况是编辑,我可以通过它。如果是创造呢?还没有模型。这样做会导致空引用异常。
    • 创建一个空模型并将其传递给视图,我根据您的评论更改了答案
    • 嗯,这也会带来问题,因为在我的 UserDetails ViewModel 中,我有一个名为 isActive 的 bool 类型的属性。如果我创建一个空对象,它会在视图中自动分配为 false。抱歉,我对 MVC 很陌生。这是我的第一个项目。
    • 您必须自己回答的问题是,您是否需要不同的视图模型来编辑和创建 UserDetails。
    • 嗯,我希望有一个通用的解决方案来解决这个问题,引擎可以像 Web 表单中的 UserControls 一样处理 Partials。猜我错了。因此,更合适的方法是展平视图。所以在我的主视图中,而不是@Html.Partial("CommonAddress"),我将从部分中取出所有 UI 并放置在我的主视图中。当我进行模型绑定时,我只会做 @Html.TextBoxFor(x => x.Model.Address.street1) 我正确吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多