Я хочу создать повторно используемый ASP.NET MVC ViewUserControl, который строго типизирован для перечисления.
Можно ли это сделать? Когда я пытаюсь это сделать, он говорит, что строгий тип, который может принимать ViewUserControl, может иметь только ссылочный тип: (
Это также означает, что я не могу передать int как TModel.
Почему я хочу это сделать? Я в разных местах моего сайта, я показываю простое изображение, которое зависит от перечисления. Таким образом, вместо того, чтобы копировать эту логику в нескольких местах, я хочу иметь этот повторно обновляемый ViewUserControl и передать перечисление.
например.
public enum AnimalType
{
Cat,
Dog
}
// .. now code inside the view user control ...
switch (animalType)
{
case AnimalType.Cat: source = "cat.png"; text="cute pussy"; break;
... etc ...
}
<img src="<%=Url.Content("~/Images/" + source)%>" alt="<%=text%>" />
Я полагаю, что решением было бы НЕ создавать строго типизированный ViewUserControl (потому что тип TModel может быть только класса type), а затем сделать следующее ..
<% Html.RenderPartial("AnimalFileImageControl", animalType); %>
и в ViewUserControl ...
AnimalType animalType = (AnimalType) ViewData.Model;
switch (animalType)
{ ... etc ... }
ура :) 1018 *