簡體   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