0

こんにちは、モデルを可能な限りきれいに保つためにメタダを別のファイルに追加しようとしていますが、一部のプロパティが検証を表示していないように見えるため、何かが間違っているようです。これが私のモデルクラスです:

public partial class BookModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Author { get; set; }
    public string Description { get; set;}
    public DateTime PublicationDate { get; set; }
    public int CategoryId { get; set; }
    public decimal Price { get; set; }
    public string BookUrl { get; set; }
}

ここに私のメタデータ部分クラスがあります:

[MetadataType(typeof(BookModel))]
public partial class BookModelMetada
{
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }

    [Required]
    public string Author { get; set; }

    [Required]
    [DataType(DataType.MultilineText)]
    public string Description { get; set; }

    [Required]
    [DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
    public DateTime PublicationDate { get; set; }

    [Required]
    public int CategoryId { get; set; }

    [Required]
    [DataType(DataType.Currency)]
    [DisplayFormat(DataFormatString = "{0:c}")]
    public decimal Price { get; set; }

    public string BookUrl { get; set; }
}

奇妙なフィールドは、PublicationDate と Price が検証エラーを表示するが、他のプロパティは表示しないことです。

私は何を間違っていますか?

編集:

コードを表示:

 <p>
            @Html.LabelFor(model => model.Book.Name, "Book Name")
            @Html.TextBoxFor(model => model.Book.Name)
        </p> 
        <p>
            @Html.LabelFor(model => model.Book.Author)
            @Html.TextBoxFor(model => model.Book.Author)
        </p>
        <p>
            @Html.LabelFor(model => model.Book.PublicationDate ,"Publication Date")
            @Html.TextBoxFor(model => model.Book.PublicationDate, new { @class="datepicker" })
        </p>
        <p>
            @Html.LabelFor(model => model.Book.Price)
            @Html.TextBoxFor(model => model.Book.Price)
        </p>
        <p>
            @Html.LabelFor(model => model.Book.CategoryId, "Select category")
            @Html.DropDownListFor(model => model.Book.CategoryId, new SelectList(Model.Categories, "Id", "Name"))
        </p>
        <p> 
            @Html.LabelFor(model => model.Book.Description)
            @Html.TextAreaFor(model => model.Book.Description)
        </p>
        <p>
            <input type="submit" value="Create" class="link"/>
            @Html.ActionLink("Back to List", "Books", "ProductManager", null, new { @class = "link" })
        </p>
4

2 に答える 2

2

[MetadataType(typeof(BookModel))]問題は、モデル クラスの代わりにメタデータ クラスを追加したことです。

于 2013-03-22T12:03:32.413 に答える
0

1 つ以上の原因が考えられます。ただし、最初に、ビューまたはビューのレイアウトに jquery.unobtrusive および jquery.validate が含まれていることを確認してください。ただし、ビューが不明確なようです。使用する必要があります@Html.LabelFor(model =>model.Book.Author)。全体像を投稿してください。

于 2013-03-22T09:37:19.243 に答える