5

コントローラーでネストされたプロパティを BindAttribute に含めたり除外したりするにはどうすればよいですか?

私は「ストリーム」モデルを持っています:

public class Stream
{
    public int ID { get; set; }

    [Required]
    [StringLength(50, ErrorMessage = "Stream name cannot be longer than 50 characters.")]
    public string Name { get; set; }

    [Required]
    [DataType(DataType.Url)]
    public string URL { get; set; }

    [Required]
    [Display(Name="Service")]
    public int ServiceID { get; set; }

    public virtual Service Service { get; set; }
    public virtual ICollection<Event> Events { get; set; }
    public virtual ICollection<Monitor> Monitors { get; set; }
    public virtual ICollection<AlertRule> AlertRules { get; set; }
}

このモデルの「作成」ビューのために、いくつかの追加情報をビューに渡すビュー モデルを作成しました。

public class StreamCreateVM
{
    public Stream Stream { get; set; }
    public SelectList ServicesList { get; set; }
    public int SelectedService { get; set; }
}

これが私の投稿アクションの作成です:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include="Stream, Stream.Name, Stream.ServiceID, SelectedService")] StreamCreateVM viewModel)
    {
        if (ModelState.IsValid)
        {
            db.Streams.Add(viewModel.Stream);
            db.SaveChanges();
            return RedirectToAction("Index", "Service", new { id = viewModel.Stream.ServiceID });
        }

        return View(viewModel);
    }

さて、これは[Bind(Include="Stream, Stream.Name, Stream.ServiceID, SelectedService")]ビットを除いてすべて機能します。ネストされたオブジェクト内にプロパティを含めることも除外することもできないようです。

4

1 に答える 1