C# MVC标识-将寄存器拆分为两个视图

C# MVC标识-将寄存器拆分为两个视图,c#,asp.net-mvc,C#,Asp.net Mvc,MVC新手。我正在尝试为继承内置身份模型ApplicationUser的两个独立模型(学生和导师)复制现有的Identity Register.cshtml。我这样做是为了在应用程序中使用单独的学生和导师模型,但将它们存储在同一位置,并利用相同的身份用户和角色功能 我修改了AccountController.cs,使用Register()操作方法作为创建RegisterStudent()和RegisterTutor()操作方法的基础。唯一的区别是我用对相应模型的引用替换了所有Applicatio

MVC新手。我正在尝试为继承内置身份模型ApplicationUser的两个独立模型(学生和导师)复制现有的Identity Register.cshtml。我这样做是为了在应用程序中使用单独的学生和导师模型,但将它们存储在同一位置,并利用相同的身份用户和角色功能

我修改了AccountController.cs,使用Register()操作方法作为创建RegisterStudent()和RegisterTutor()操作方法的基础。唯一的区别是我用对相应模型的引用替换了所有ApplicationUser引用

然后,我手动复制了Register视图,并将其重命名为RegisterStudent和RegisterTutor,从而更改了HtmlHelper引用。当我导航到这些路径时,我收到一个“资源找不到”错误,表明它不喜欢我的
https://localhost:44301/Account/RegisterTutor

当我将registerutor.cshtml的内容复制到Register.cshtml文件中时,它的工作方式就像champ。对我遗漏的东西有什么想法吗?

你可以做两件事:

  • 您可以创建公共视图(部分视图),该视图从
    RegisterTutor.cshtml
    RegisterStudent.cshtml
    内部调用,分别从操作
    RegisterTutor
    RegisterStudent
    调用
  • 您可以直接从两个视图引用相同的视图(cshtml文件) 行动如下:

    public ActionResult RegisterTutor()
    {
        var _model = 'Model Object'
        ....
        ....
        return ("~/Account/Register.cshtml", _model)
    }
    
  • 同样地

        public ActionResult RegisterStudent()
        {
            var _model = 'Model Object'
            ....
            ....
            return ("~/Account/Register.cshtml", _model)
        }
    
    如果属性相同,您可以将
    Register.cshtml
    与基本模型强绑定,或者您可以创建一个接口,该接口可用于强绑定视图,然后上述两个模型都应实现它