[英]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.