MVC动态模型到动态视图

时间:2014-05-08 18:05:04

标签: c# asp.net-mvc-4

我正在尝试开发一个mvc页面,我们不知道在满足某些条件之前要使用的模型。当我们需要模型时,视图必须类似于该信息。

由于我们使用MVC 4并使用带有lambda表示法的模型,我们无法从模型中呈现每个属性,因为它们都具有不同的属性和不同的变量类型,我们只需要使用一个视图和一个控制器做到这一点。

我实现了动态类,但在尝试渲染视图时遇到困难,因为我不知道它们会有什么属性,也不知道它们的名称。

任何有关如何完成此任务或教程的指示都可以解释这种情况。

3 个答案:

答案 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。

http://dynamicmvc.com