我正在尝试开发一个mvc页面,我们不知道在满足某些条件之前要使用的模型。当我们需要模型时,视图必须类似于该信息。
由于我们使用MVC 4并使用带有lambda表示法的模型,我们无法从模型中呈现每个属性,因为它们都具有不同的属性和不同的变量类型,我们只需要使用一个视图和一个控制器做到这一点。
我实现了动态类,但在尝试渲染视图时遇到困难,因为我不知道它们会有什么属性,也不知道它们的名称。
任何有关如何完成此任务或教程的指示都可以解释这种情况。
答案 0 :(得分:0)
我不知道这是否能解答您的问题,但您可以指定要发送的模型,以及要将其发送到哪个视图,而不会真正做任何太花哨的事情:
public ActionResult Index(int id)
{
var model1 = new Model1();
var model2 = new Model2();
if (id == 1)
{
return View("ViewForModel1", model1);
}
if (id == 2)
{
return View("ViewForModel2", model2);
}
// if it gets this far, return index
return View();
}
MSDN:http://msdn.microsoft.com/en-us/library/dd460310(v=vs.118).aspx
答案 1 :(得分:0)
这很乱。但是,如果您的视图采用dynamic
模型,则可以在视图中执行以下操作:
@model dynamic
@if(Model is Model1)
{
...
return;
}
@if(Model is Model2)
{
...
return;
}
答案 2 :(得分:0)
一般来说,如果你想要一些动态的东西,那么最好以弱类型的方式做事。您可能希望避免使用lambda帮助程序,而是使用弱类型的html帮助程序计数器部分。您可以使用反射或模型元数据引擎获取属性名称。您可能还想看一下Dynamic MVC。