我知道this question,但原始海報接受了一個不涉及嵌套的解決方案。我肯定希望嵌套部分視圖(當然,除非有更好的方法)。是否可以嵌套部分視圖?
我有一個頁面,可以根據用戶在主視圖中的操作,加載幾個部分視圖之一。 (這些視圖是部分的,因爲我的理解是,如果你想從Ajax調用中加載重要的附加內容,則需要從調用中返回一個PartialViewResult。)幾個部分視圖有一個公共元素,一個下拉列表,喜歡把它分解成它自己的部分觀點。
但這不起作用。我的部分視圖都有一個關聯的視圖模型,這是他們的模型。對於嵌套的局部視圖,我想從父視圖的視圖模型中傳遞一個單個字段的值,一個可爲空的int,作爲嵌套局部視圖的模型。
但是在運行時,我收到一個錯誤消息,說我的局部視圖需要一個可爲空的對象,但是接收到了X,其中X是與父局部視圖關聯的視圖模型的類型。
所以我的問題是雙重的:
是築巢的部分景色根本不允許? (在這種情況下,我希望框架將檢查情況並拋出一個錯誤,如此明確說)。
有沒有辦法讓我想要的效果,一個分解出來的通用界面元素,其他比部分觀點?我已經考慮過,但沒有嘗試過創建編輯模板,因爲我相信對部分視圖不起作用的東西對於這些不起作用,但我可能是錯的。
ETA:我發現我的問題:當你通過對模型中的空值到HtmlHelper.Partial或的RenderPartial,渲染引擎subsitutes的地方,空的呼喚局部視圖模型,假設你根本沒有通過一個模型。
在我的情況下,這不是真的:我的可空Nulllable < int>是可空的,因爲在設置之前它是空的! null在語義上是有意義的!
但這就是我遇到問題的原因。
爲了響應您的編輯:您必須將null轉換爲可空int,例如'(int?)null' – dotjoe 2012-02-24 22:28:54
@dotjoe這會有一個不同的效果比傳遞一個模型屬性或類型爲int的變量嗎?那恰好有一個空值?因爲那正是我所做的。我會認爲,如果一個空投給int?會工作,一個已經是int類型的變量?會工作。但事實並非如此。 – 2012-02-25 00:05:24
是的,這也應該工作......它不會比我的答案...怪異。 – dotjoe 2012-02-25 14:30:02