Элементы управления пользователя и строго типизированные данные - PullRequest
1 голос
/ 24 июня 2010

Я пытаюсь передать строго типизированный объект в UserControl, но не могу.Я должен что-то упустить.Поэтому мой пользовательский элемент управления ожидает объект типа Data, который содержит список строк.На моей странице я вызываю RenderPartial с именем моего пользовательского элемента управления и данными.Тем не менее, когда страница запускается, он говорит, что this.Model (или this.ViewData.Model) имеет значение null.Зачем?Чего мне не хватает?

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)
        { 
           // ...
        }
    %>

1 Ответ

1 голос
/ 24 июня 2010

ViewData содержит отображение string -> object. Вам необходимо привести его к типу, который ожидает ваш строгий тип:

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

Лично я бы посоветовал вам сделать все строго типизированными и полностью отказаться от использования ViewData, но я понимаю, что это не всегда возможно:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...