我希望创建一个可重用的 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 类型只能是类型类),然后执行以下操作..
<% Html.RenderPartial("AnimalFileImageControl", animalType); %>
并在 ViewUserControl ...
AnimalType animalType = (AnimalType) ViewData.Model;
switch (animalType)
{ ... etc ... }
干杯:)