0

私は EF + MVC3 + カミソリを使用しています。名前、姓の変数 + 外部キーを含む userProfile モデル クラスがあります (ドロップダウンとして表示したいので)、このクラスとデータ コンテキストを選択するだけでコントローラーを作成しました。

レコードを作成しようとすると、検証領域に次のように表示されます: 「趣味フィールドは必須です。」 . 「趣味」ドロップダウンを必須にしないでほしい。どうすればそれを達成できますか?!...

これは私が持っているものです:

モデル:

public class UserProfile    {
    [Key]
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }
    [Required]
    public string Surname { get; set; }

    public int HobbiesId { get; set; }
    public virtual Hobby Hobby { get; set; }}

public class Hobby
{
    public int HobbiesId { get; set; }
    public string HobbieName { get; set; }
    public virtual ICollection<UserProfile> UserProfiles { get; set; } 
}

 public class UserProfileDBContext : DbContext
{
    public DbSet<UserProfile> UserProfiles { get; set; }
    public DbSet<Hobby> Hobbies{ get; set; }
 }

意見:

[..]@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
    <legend>UserProfile</legend>

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

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

    <div class="editor-label">
        @Html.LabelFor(model => model.HobbyId, "Hobby")
    </div>
    <div class="editor-field">
        @Html.DropDownList("HobbyId", String.Empty)
        @Html.ValidationMessageFor(model =>  model.HobbyIdId)
    </div>
[..]

コントローラーの作成は次のとおりです。

   [HttpPost]
    public ActionResult Create(UserProfile userprofile)
    {
        if (ModelState.IsValid)
        {
            db.UserProfiles.Add(userprofile);
            db.SaveChanges();
            return RedirectToAction("Index");  
        }

        ViewBag.HobbyId = new SelectList(db.Hobbies, "HobbyId", "Hobby", userprofile.HobbyId);
 return View(userprofile); }

私はすでに変更を試みました:

 public class Hobby
{
    public int ?HobbiesId { get; set; }

しかし、うまくいきませんでした。

何か助けはありますか? ...

前もって感謝します!..

PnP

4

1 に答える 1

1

以下に示すように、外部キー制約を追加します。

 public int? HobbiesId { get; set; }
 [ForeignKey("HobbiesId")]
于 2012-10-30T07:45:00.783 に答える