MVC基础模型属性为新记录创建设置默认值

时间:2016-10-27 17:26:00

标签: asp.net-mvc-4

我有一个基本模型,它有几种不同形式的常见属性。

public class BaseForm
{
    public int Id { get; set; }
    public int SubId { get; set; }
    ...several more common properties...
}

然后,我为各个表格提供了更具体的模型。

public class InfoForm : BaseForm
{
    public string Information { get; set; }
    public string Commands { get; set; }
}

public class WhatForm: BaseForm
{
    public string WhatHappens { get; set; }
    public string Behavior { get; set; }
}

现在更新这些模型时,一切都很有效,因为BaseForm.Id和BaseForm.SubId由现有记录填充。

创建新记录时,我缺乏知识。 BaseForm.Id和BaseForm.SubId是可预测的,但每种表单都不同。

对于InfoForm,他们将是

Record one..
BaseForm.Id = 1 
BaseForm.SubId = 1

Record two..
BaseForm.Id = 2
BaseForm.SubId = 1

Record three..
BaseForm.Id = 3
BaseForm.SubId = 1

//Since Id is auto increment I assume it can be left blank for db

和WhatForm他们将

Record one..
BaseForm.Id = 1 
BaseForm.SubId = 2

Record two..
BaseForm.Id = 2
BaseForm.SubId = 2

Record three..
BaseForm.Id = 3
BaseForm.SubId = 2

//Since Id is auto increment I assume it can be left blank for db

我的目标是只有一个控制器动作,每个表单指向它,但如果我必须有一个不同的控制器动作来设置id和subid的特定值,那么就这样吧。

所以我的问题是有预先填充这些值的方法,还是我必须在控制器操作中执行此操作?

1 个答案:

答案 0 :(得分:1)

只需使用子类的构造函数:

public class InfoForm : BaseForm
{
    public InfoForm()
    {
        SubId = 1;
    }

    ...
}

而且,是的,你不应该混淆Id。保存后,实体框架将使用数据库中的自动ID对其进行回填。