【问题标题】:ASP.NET MVC 1.0 nested models with partial views带有部分视图的 ASP.NET MVC 1.0 嵌套模型
【发布时间】:2017-04-17 15:49:57
【问题描述】:

我正在尝试让嵌套模型与嵌套视图正确绑定,但没有任何运气。

这是一个详细的外观

这是课

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

在另一个类中我们有更多的子对象,例如

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

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

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

主视图需要一个 Foo 类型的类。在该视图内部,我们调用 html 帮助器来渲染部分视图,该视图需要我们传入的另一个类型的模型。调用将是

<% 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 上。

我做错了什么?

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    我有办法解决这个问题。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-14
          • 2013-02-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多