Я пытаюсь создать представление, которое принимает экземпляр моего собственного класса RichListViewModel
, а затем создает симпатичный список элементов в модели представления, вызывая Html.DisplayFor
для каждого из них (пытаясь сохранить приложениеСУХОЙ, поместив все это в один частичный вид).Однако у меня возникают проблемы с тем, какой тип объявить в файле .cshtml ... Я попытался:
@model MyProject.ViewModels.RichListViewModel<dynamic>
<ol class="rich @(Model.SetName.ToLower())-list">
@if (Request.IsAuthenticated)
{
<li id="@Model.ElementName-controls" class="@Model.ElementName buttons">
<a href="@Url.Action("Create", Model.SetName, null)" class="button create-button"><span class="icon"></span> <span class="text">Add @Model.SetMemberName</span></a>
</li>
}
@foreach (var item in Model)
{
<li class="@Model.ElementName">
@Html.DisplayFor(model => item)
</li>
}
</ol>
@if (!Model.Any())
{
<div class="notice">Sorry, there aren’t any @String.Format("{0}s", Model.SetMemberName.ToLower()) available right now. Check back soon, or call us at @Model.PhoneNumber.</div>
}
Но затем я получаю это сообщение ...
Ошибка сервера в приложении.Элемент модели, переданный в словарь, имеет тип «MyProject.ViewModels.RichListViewModel 1[MyProject.ViewModels.SaleViewModel]', but this dictionary requires a model item of type 'MyProject.ViewModels.RichListViewModel
1 [System.Object]».
Фактический RichListViewModel<T>
- это именно то, что вы ожидаете, ипрекрасно компилируется - это просто класс с параметром типа, который реализует IEnumerable<T>
и имеет свойства, необходимые для заполнения вышеприведенной информации.
Возможно ли то, что я пытаюсь сделать чистым способом?Если да, то как мне это сделать?