繁体   English   中英

ASP.NET MVC 1.0嵌套模型与部分视图

[英]ASP.NET MVC 1.0 nested models with partial views

我试图让嵌套模型与嵌套视图正确绑定但是没有运气。

这是一个详细的外观

这是班级

public class Foo
{ 
    public AnotherClass AnotherClass { get; set; }
    public string Name { get; set; }
    public ......
}

在AnotherClass里面我们有更多的子对象,比如

public class AnotherClass 
{
    public AThirdClass { get; set; }
}

第三个类具有我们想要绑定的属性。

public class AThirdClass
{
    public string ImportantString { get; set; }
    public string SecondString { get; set; }
}

主视图期望一类Foo类型。 在该视图的内部,我们调用html帮助器来呈现部分视图,该视图需要我们传入的类型为AnotherClass的模型。调用将是

<% Html.RenderPartial("MyPartialView", Model.AnotherClass); %>

在局部视图MyPartialView中,我们有用于编辑AThirdClass中的字段的文本框,它们是这样设置的

<%= Html.TextBox("AThirdClass.ImportantString", Model.AThirdClass.ImportantString) %>

当我们回发到服务器时,我将丢失在文本框中输入的所有数据。 MVC 1.0中是否不支持此功能? 如果我仍然使用嵌套对象时没有任何部分视图,我可以使用这种技术吗?

看起来在MVC 2.0中你可以使用EditorFor HTML帮助器来做我需要做的事情,但是我坚持使用MVC 1.0。

我究竟做错了什么?

我有一个解决这个问题的方法。

如果您将完整视图模型传递到局部模型,然后从顶部模型直接引用子对象,那么您将没事。

我仍然想听听其他人是如何做到这一点的。

我在MVC 3上,仍然有同样的问题,切换到不太理想的继承。 如果有人知道更好的方式请发布。

我用下面的代码解决了它。 问题是,为部分视图模板生成的ID不符合MVC模型绑定规则。 因此,请尝试使用部分视图的变体,如下所示。

<% Html.RenderPartial("MyPartialView", Model.AnotherClass, new ViewDataDictionary(){
    TemplateInfo = new TemplateInfo() {
        HtmlFieldPrefix = "AnotherClass"
    }
}); %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM