Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MVC中动态绑定模型_C#_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 在MVC中动态绑定模型

C# 在MVC中动态绑定模型,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我有一个试图创建的管理门户,其中有特定于给定客户机的自定义端点 例如,对于一个客户机,admin/ourstaff页面会在内部重定向到admin/teammembers页面,因为我们的staff是一个遵循teammembers模板的页面。但是,客户可以选择名为admin/ourstaff的端点,因此无法静态地执行此操作 在我的RouteConfig.cs中,我有: routes.MapRoute( "adminPageRoute",

我有一个试图创建的管理门户,其中有特定于给定客户机的自定义端点

例如,对于一个客户机,admin/ourstaff页面会在内部重定向到admin/teammembers页面,因为我们的staff是一个遵循teammembers模板的页面。但是,客户可以选择名为admin/ourstaff的端点,因此无法静态地执行此操作

在我的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 = ???;
}
问题是,如何生成此模型?通常我可以将TeamMemberModel参数作为参数放在action方法中,MVC会自动为我填写它。但是,由于它是直接从另一个方法调用的,如果我尝试以下方法,显然会出现编译错误:

public ActionResult TeamMembers(TeamMemberModel model)
{
}
我可以从请求的HTTPContext手动映射这一个模型,但我真的不希望对我计划拥有的所有模型都这样做。有没有办法在没有控制器方法的情况下动态触发绑定并形成模型的新实例?非常感谢您的帮助

编辑: 结果很简单。答案张贴在这里以备将来参考

public ActionResult TeamMembers()
{
    TeamMemberModel model = new TeamMemberModel();
    this.UpdateModel<TeamMemberModel>(model);
}
public ActionResult TeamMembers()
{
    TeamMemberModel model = new TeamMemberModel();
    this.UpdateModel<TeamMemberModel>(model);
}
public ActionResult团队成员()
{
TeamMemberModel=新的TeamMemberModel();
这个.UpdateModel(模型);
}

结果很简单。答案张贴在这里以备将来参考

public ActionResult TeamMembers()
{
    TeamMemberModel model = new TeamMemberModel();
    this.UpdateModel<TeamMemberModel>(model);
}
public ActionResult TeamMembers()
{
    TeamMemberModel model = new TeamMemberModel();
    this.UpdateModel<TeamMemberModel>(model);
}
public ActionResult团队成员()
{
TeamMemberModel=新的TeamMemberModel();
这个.UpdateModel(模型);
}

请注意,您应该首先初始化viewmodel类,因为它不是
静态的
TeamMemberModel model=new TeamMemberModel()。编译器错误可能与在控制器操作方法中使用未初始化类有关。感谢您的响应,但可能我不清楚问题不是我遇到了编译器错误,而是我不知道如何从HTTP请求对象获取模型。我现在正在探索使用UpdateModel可能有效的选项