在mvc3 vs2010中具有单一视图或两个视图的单个实体?

时间:2013-10-22 06:50:05

标签: c# visual-studio-2010 asp.net-mvc-3

我有以下实体模型

public class Employee
{
    public int Employee ID{get;set;}

    public string employeename{get;set;}

    public datetime employeeDOb{get;set;}

    public datetime? employeeDateOfJoin{get;set;}

    public string empFamilyname{get;set;}

    public datetime empFamilyDob{get;set;}    
}

在这里,我必须设计一个收集员工信息和员工家庭信息的视图。

由于我正在处理已有的数据,因此 empFamilyDob 中的数据不是强制性的。  但现在它已被强制执行,之前的数据不包含 EmpFamilyDob。 所以我很自然地将这个新属性 EmpFamilyDob 添加到模型中,并通过DataAnnotations使其成为必需。

现在有两组视图需要开发。 1.一种只允许在没有员工家庭信息的情况下收集员工信息的视图。即 empFamilyName EmpFamilyDob .-- Hr部分使用此视图插入 empplyee详细信息

  1. 由于现在强制使用empFamilyname和EmpFamilyDob,其他部分将编辑数据并更新 EmpFamilyName EmpFamilyDob ,因为有关员工家庭详细信息的信息是接收。
  2. 我有CreateNew的动作控制器和使用默认模型生成的Edit。 正在执行两个用户操作。

    1.当用户点击Create new时 - 他将只能更新Employee信息

    2.当其他部分收到员工家庭详细信息时,他们会更新姓氏和家庭出生日期。即EmployeeFamilyname和EmployeFamilyDob。

    创建新记录时,用户应该只能更新员工信息,在编辑信息时,他应该能够更新员工信息。由于我有一个单独的视图,大多数这些字段是必需的,不允许null,我怎样才能在sincle视图中实现这一点?

    我已经像这样重新修改了模型

    公共类员工 {

    public int员工ID {get; set;}

    public string employeename{get;set;}
    
    public datetime employeeDOb{get;set;}
    
    public datetime? employeeDateOfJoin{get;set;}
    
    public string empFamilyname{get;set;}
    
    public datetime? empFamilyDob{get;set;}    
    

    }

    现在默认情况下,我希望createnew操作会为empFamilyname(字符串数据类型)和empFamilyDob插入空值。在编辑操作中,应该使用户输入empFamilyname和empFamilyDob(强制)。由于用户有可能编辑有关员工的其他信息(例如employeeDob),我不想进行部分查看。你能用一些插图帮我解决吗?提前致谢

1 个答案:

答案 0 :(得分:0)

“创建新”操作会阻止用户提交家庭信息,但这些信息是强制性的,如何进行验证?你指定了一些默认值吗?

无论如何,您可以根据需要使用部分视图:

  1. _EmployeeInformation将仅包含员工信息的字段(没有家庭信息)
  2. _EmpFamilyInformation将包含与仅限家庭相关的字段
  3. 这样,您可以创建一个仅包含“_EmployeeInformation”的“创建新”视图,而“编辑”视图包含“_EmployeeInformation”+ _EmpFamilyInformation“。这可以防止您在查看两个视图或添加一些视图时重复代码视图中的噪音(比如如果您可以根据用户要求显示所有字段然后进行测试),如果你选择了一个。