动态绑定MVC中的模型

时间:2017-07-17 03:24:35

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

我有一个我想要创建的管理门户,在其中我有特定于给定客户端的自定义端点。

因此,例如,对于一个客户端,admin / our-staff页面将在内部重定向到admin / team-members页面,因为我们的员工是一个遵循团队成员模板的页面。但是,客户可以选择名为admin / our-staff的端点,因此无法静态执行此操作。

在我的RouteConfig.cs中,我有:

            routes.MapRoute(
            "adminPageRoute",
            "admin/pages/{page}/{action2}",
            new { controller = "Page", action = "Index", page = "", action2 = "" }
            );

然后在我的PageController.cs中我有:

public ActionResult Index(string page, string action2)
{
    var pageData = ...

    //  Grabbing from database a map between page variable and PageType 
    // depending on Session's User ID

    if (pageData.PageType == 1)
    {
        return TeamMembers();
    }

    else return View("Index");

}

public ActionResult TeamMembers()
{
    TeamMemberModel model = ???;
}

问题是,我该如何生成这个模型?通常我可以将ActionMemberModel参数作为参数放在action方法中,MVC会自动为我填写。但是因为它是从另一个方法直接调用的,所以如果我尝试这样的话,我会明显得到一个编译错误:

public ActionResult TeamMembers(TeamMemberModel model)
{
}

我可以从Request的HTTPContext手动映射这一个模型,但我真的不愿意为我计划的所有模型做到这一点。有没有办法动态触发绑定并在没有控制器方法的情况下形成模型的新实例?任何帮助非常感谢

修改 它最终变得简单。答案张贴在此处以供将来参考

public ActionResult TeamMembers()
{
    TeamMemberModel model = new TeamMemberModel();
    this.UpdateModel<TeamMemberModel>(model);
}

1 个答案:

答案 0 :(得分:0)

最终变得简单。答案张贴在此处以供将来参考

public ActionResult TeamMembers()
{
    TeamMemberModel model = new TeamMemberModel();
    this.UpdateModel<TeamMemberModel>(model);
}