如何构建主键,使其成为编辑表单上的隐藏字段

时间:2014-02-13 17:58:25

标签: asp.net-mvc entity-framework ef-code-first scaffolding asp.net-mvc-scaffolding

我将以下部分类作为模型:

public partial class SourceDevelopmentActivity
{
    public int? ActivityID { get; set; }
    public string Description { get; set; }        
}

我还有以下类来配置模型:

public class SourceDevelopmentActivityMap : EntityTypeConfiguration<SourceDevelopmentActivity>
{
    public SourceDevelopmentActivityMap()
    {
        this.ToTable("SourceDevelopmentActivity");
        this.HasKey(t => t.ActivityID);
        this.Property(t => t.ActivityID).HasColumnName("ActivityID");
    }
}

我将配置传递到我的DBContext的OnModelCreating方法的modelBuilder配置中:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Configurations.Add(new SourceDevelopmentActivityMap());
}

当我使用scaffolding选项创建控制器和视图(CRUD)时,编辑表单具有以下设置:

<div class="editor-label">
    @Html.LabelFor(model => model.ActivityID)
</div>
<div class="editor-field">
    @Html.EditorFor(model => model.ActivityID)
    @Html.ValidationMessageFor(model => model.ActivityID)
</div>

如果我改变班级使用

public int? SourceDevelopmentActivityID { get; set; }

然后我没有得到EditorFor html帮助器,而是得到HiddenFor html帮助器(这就是我想要的):

@Html.HiddenFor(model => model.SourceDevelopmentActivityID)

我的问题是如何使用ActivityID作为我的属性名称,但是让脚手架理解它不应该显示在编辑表单上(就像我使用SourceDevelopmentActivityID时那样)?我认为这是一个非常直接的任务,这让我觉得我错过了一些明显的东西。

如果您需要更多信息或有任何疑问,请与我们联系。在此先感谢您的帮助!

0 个答案:

没有答案