如何阻止ASP.NET MVC创建/编辑模板生成指定模型字段?
MVC5视图模板排除指定字段的解决方案
- 使用[ScaffoldColumn(false)]特性:给不需要在创建/编辑视图中显示的字段添加该特性,视图模板生成时会直接忽略这些字段,不会生成对应的输入控件。适合自动编号Id、DateCreated这类完全不需要用户操作的字段,示例代码:
public class YourModel { [ScaffoldColumn(false)] public int Id { get; set; } [ScaffoldColumn(false)] public DateTime DateCreated { get; set; } // 其他需要展示的业务字段 public string ProductName { get; set; } public decimal Price { get; set; } }
- 数据库优先模式的持久化处理:因为数据库优先生成的模型类会随数据库更新被覆盖,不能直接修改自动生成的代码。建议通过分部类+元数据类的方式添加特性,避免代码丢失:
// 自动生成的模型分部类(无需修改) public partial class YourModel { public int Id { get; set; } public DateTime DateCreated { get; set; } public string ProductName { get; set; } public decimal Price { get; set; } } // 自定义的元数据类,添加特性 [MetadataType(typeof(YourModelMetadata))] public partial class YourModel { } public class YourModelMetadata { [ScaffoldColumn(false)] public int Id { get; set; } [ScaffoldColumn(false)] public DateTime DateCreated { get; set; } }
- 补充:[HiddenInput]特性的区别:如果需要字段在后台传递但不在页面显示(比如某些隐藏的业务参数),可以用
[HiddenInput(DisplayValue = false)],但它会生成<input type="hidden">控件;如果是完全不想让字段出现在视图代码里,优先用[ScaffoldColumn(false)]。
内容的提问来源于stack exchange,提问作者Miranda
相关产品推荐
相关产品推荐

