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