1

非常に単純なオブジェクトを追加するためのビューがあります。

@Html.ValidationSummary(true)
@using (Html.BeginForm())
{
    <div class="editor-label">
        @Html.LabelFor(tag => tag.Name)
    </div>
    <div class="editor-field">
        @Html.EditorFor(tag => tag.Name)
        @Html.ValidationMessageFor(tag => tag.Name)
    </div>
    <input type="submit" value="Insert" class="submit_btn" />
}

私はこのようなコントローラーを作りました:

if (ModelState.IsValid)
{
    ...
    context.Tags.Add(Tag);
    context.SaveChanges();
    return RedirectToAction("Index");
}
return View(Tag);

モデルはデータベーススキーマから(edmxの一部として)生成されています。フィールド名のnull許容プロパティはfalseに設定されています。

何らかの方法で、空白の入力「名前」の場合、ModelState.IsValidプロパティはtrueであり、それを保存しようとしています(SaveChanges()では、検証エラーでクラッシュします)。なんで?

4

2 に答える 2

4

IsValidプロパティはModelState、エンティティモデルとは何の関係もありません。モデルのModelStateプロパティを装飾した属性を確認します。

例えば:

public class Tag {

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

ここで、MVCプロジェクトのモデルとしてデータベースエンティティを使用することは最善のアイデアではない可能性があることに注意してください。マッパーを使用してエンティティをモデルにマッピングすることを検討してください。その逆も同様です。

于 2012-03-07T15:55:06.560 に答える
0

部分クラス内のプロパティにRequired属性を追加する必要がありますが、「null不可」では追加できません。

于 2012-03-07T15:54:51.993 に答える