Razor Pages使用Html.EditorFor()编辑/创建

时间:2018-05-25 14:57:31

标签: asp.net-mvc razor asp.net-core

在这里完成Noob - 尝试学习Dot Net Core 2 Razor Pages。试图找出怎样做" down and dirty"编辑我的一些模特。我打算尝试使用反射,但那不起作用 - 或者显然我不知道自己在做什么。

我们说我的数据模型定义为:

public class Book
{
    public int Id { get; set; } = 0;
    [Required]
    [MaxLength(75)]
    [Display(Name = "Book Title")]
    public string Title { get; set; }
    [Required]
    [MaxLength(50)]
    public string Author { get; set; }
    [Required]
    [Range(0,99)]
    public decimal Price { get; set; }
    [Required]
    [Range(0, 5)]
    public int Rank { get; set; }
}

我发现如果使用:

@Html.EditorFor(model => model.Book)

...在我的.cshtml(编辑或创建)页面上,我可以获得一个基本的编辑或创建屏幕,该屏幕尊重模型中所有字段的验证和其他属性。大!我可以用它来进行基本的管理数据编辑。

问题是双重的:

  1. 在我的编辑页面上,我需要我的" Id"字段只读
  2. 在我的“创建”页面上,我需要我的" Id"字段默认为0并且只读
  3. 任何组合:

        //[ScaffoldColumn(false)]
        //[HiddenInput(DisplayValue =false)]
        //[HiddenInput]
        //[DefaultValue(0)]
        //[ReadOnly(true)]
        //[Editable(false)]
    

    ......似乎无法正常工作。

    有没有办法完成上面列出的两个要求?

1 个答案:

答案 0 :(得分:0)

不久前,我自己遇到了这个问题。 [HiddenInput(DisplayValue =false)]确实可以工作,但是当您将数据模型放入页面(或视图)时,它仍会生成与其他输入相同的语法。但是,在运行时,输入将呈现为隐藏输入。