C#MVC:如何为多步形式创建模型?

时间:2017-06-27 12:34:28

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

我有多步骤表格,用户完成大学注册:

在第一种形式中,学生填写他的个人信息。 (姓名,电子邮件,手机) 在第二种形式,学生填写高中获得的分数。 (百分比) 第三种形式,学生填写他父母的详细信息。 (姓名,电子邮件,手机)

这最终会保存到数据库中。

我为这些表单创建了三个部分视图。

我应该创建包含所有这些字段的1个c#模型类,并在三个部分视图中使用它吗?

OR

为每个视图创建单独的c#模型类?

请注意,这些表单步骤可能在桌面,移动设备,应用等不同平台上具有不同的布局/字段数量,即我们计划在桌面上将step1和step2结合起来,并将它们作为单独的步骤放在桌面和移动设备上。应用

3 个答案:

答案 0 :(得分:0)

做点什么

public class ViewModel
{
public basic BDetails{get;set;}
public Advanced ADetails{get;set;}
public Personal PDetails{get;set;}
}

public class basic{
.....
}

public class Advanced
{
....
}

public class Personal
{
......
}

使用ViewModel类作为View类

答案 1 :(得分:0)

单独的模型和数据库表。

我为一所中学做了类似的项目,原始系统基于平坦的地形。随着兄弟姐妹的注册,最终出现了多个孩子和多余的信息。数据部分归一化为家庭,学生,学校,科目和桥牌表的表格,以处理它们之间的1:n和n:n关系。

虽然这需要花费更长的时间来实现,但系统增强后更容易用户友好。学校已经预先填好,可以在名单中选出;与受试者一样。地址标准化以符合邮局规范。

最终结果是一个非常开心的客户。除了信息的统一性,重复的电子邮件和邮件邮件也大大减少了。他们还签订了进一步的工作合同,以增加人口统计报告,并确定他们的招聘弱点和优势。他们还与一家姊妹公司签约进行营销。

答案 2 :(得分:0)

首先:我建议你为学生和家长使用一个模型(因为他们有类似的属性 - 姓名,电子邮件,移动)。你可以创建一个Person模型,它可以有enum PersonType。 PersonType应为Student或Parent:

public class Person
{
   public int PersonId { get; set; }
   public string Name { get; set; }
   public string Email { get; set; }
   public string Mobile { get; set; }
   public PersonType Person { get; set; }
}

enum PersonType
{
   Student,
   Parent
}

下一步:在您的情况下只需要一个视图。使用ViewModel作为它的模型。 ViewModel看起来像这样:

public class VMStudentDetails
{
   public float Percentage { get; set; }
   public Person Student { get; set; }
   public Person Parent { get; set; } 
}