列挙型に強く型付けされた再利用可能なASP.NETMVCViewUserControlを作成したいと思います。
これはできますか?私が試してみると、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 ... }
乾杯 :)