2012-11-17 32 views
4

我從我的控制器傳遞一些數據到視圖中,我希望在視圖內部顯示一個局部視圖(不要問,這很複雜)。我知道我可能甚至不應該傳遞模型到真實inded另一個圖的圖,但我已經注意到,部分觀點實際上是繼承了parenmt查看型號:在MVC中,部分視圖是否繼承了其父視圖的模型?

public ActionResult Index(){ 

Person p = new Person 
{ 
    FName = "Mo", 
    LName = "Sep" 

}; 

return View(p); 

}

內。然後我Index查看我:

<h2>Index</h2> 

@Html.Partial("_IndexPartial") 

和內部_IndexPartial我:

@Model.FName 

和這個打印「莫」。

這種行爲的目的是WPF中的子控件繼承父視圖的數據上下文嗎?在你的應用程序中使用它被認爲是不好的做法?

謝謝。

+1

好問題。很棒的個人資料照片〜「夥計們」。 – kingdango

回答

3

這種行爲的目的是WPF中的子控件 繼承父視圖的數據上下文嗎?

是的。

我看到你目前沒有將任何模型傳遞給 它只會繼承佈局,然後不需要使用部分?

如果你想繼續像你一樣使用它,也許只是更加明確它,並將當前模型傳遞給partial。

@Html.Partial("_IndexPartial", Model) 

如果你看看源Html.Partial(視圖):

public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName) 
{ 
    return Partial(htmlHelper, partialViewName, null /* model */, htmlHelper.ViewData); 
} 

它通過htmlHelper.ViewData傳遞模型,您可以訪問相同的方式模型視圖與@ {ViewData.Model},但這是不是一個很好的做法。

+1

我同意@slipsec和他的詳細解答。在設計上,View的模型可用於局部視圖。部分視圖成爲調用它的「父」視圖的「一部分」。我建議最好的做法是明確地將模型分配到局部視圖。我經常將部分(不是全部)我的模型傳遞給partial,即。 @ Html.Partial(「_ myPartialView」,Model.SubsetOfData) – kingdango

1

您可以通過模型轉換爲局部視圖使用過載第二個參數:

@Html.Partial("viewname", Model) 

沒有錯,這種做法IMO作爲其在強類型的意見和它們帶來的好處整點。 ..