2010-06-24 270 views
1

我想將強類型對象傳遞給UserControl,但我無法通過。我肯定錯過了什麼。所以我的用戶控件需要一個Data類型的對象,它包含一個字符串列表。在我的頁面上,我用我的用戶控件的名稱和數據調用RenderPartial。但是,頁面運行時,它說this.Model(或this.ViewData.Model)爲空。爲什麼?我錯過了什麼?用戶控件和強類型數據

Page.aspx

<% Html.RenderPartial("UserControl", ViewData["Data"]); %> 

PageController.cs

ViewData["Data"] = new Data() 
{ 
    Links = new List<Link> 
    { 
    } 
}; 

Data.cs

public class Data 
{ 
    public List<string> Links { get; set; } 
} 

UserControl.ascx

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Proto.Models.Data>" %> 
    <% 
     foreach (var link in this.Model.Links) 
     { 
      // ... 
     } 
    %> 
+0

你可以顯示操作方法嗎? – 2010-06-24 07:20:08

回答

1

ViewData只包含的string的映射 - >object。你需要將它轉換爲類型的強類型的視圖期待:

<% Html.RenderPartial("UserControl", (Data) ViewData["Data"]); %> 

就個人而言,我會建議你做一切強類型的,並且避開使用ViewData完全,但我明白這並不總是可能:)