有没有办法从视图中获取模型类?我有一个非常复杂的MVC应用程序,通过指定视图名称,可以通过XML配置文件配置特定视图和部分视图。我想要做的是运行自动验证配置中指定的视图是否接受特定类作为模型。见下文的例子。
配置文件如下所示:
...
<Animals>
<Animal type="dog" view="DisplayDogName" />
<Animal type="cat" view="PictureOfTheCat" />
<Animal type="horse" view="ListOfRacesHorseAttended" />
</Animals>
....
然后我会跟随控制器动作:
public ActionResult DisplayAnimal(Animal animal)
{
var viewName = _configManager.GetAnimalViewNameByType(animal.Type);
return View(viewName, animal);
}
动物类应该是从中继承的所有动物的基类。 _configManager
应该是一个简单的类,负责加载配置文件并将其数据提供给应用程序。
上面的配置中指定的每个视图都可以通过@model ModelClassName
指定其模型类,并且可以访问特定的模型属性然后显示它们。
我的目标是创建在应用程序从Global.asax启动时运行的验证。确保正确配置应用程序。这意味着每个配置的视图都将获得正确的模型看起来应该是这样的:
public bool ViewAcceptsModelClass(string viewName, Type modelType)
{
//check whether view specified by viewName accepts modelType as model class
}