2013-10-30 3 views
5

BindAttribute 내 컨트롤러에 중첩 된 속성을 포함 또는 제외 할 수 있습니까?BindAttribute, 복합 유형의 중첩 된 속성 제외

가 나는 '스트림'모델이 있습니다

public class StreamCreateVM 
{ 
    public Stream Stream { get; set; } 
    public SelectList ServicesList { get; set; } 
    public int SelectedService { get; set; } 
} 
:이 모델의 '생성'보기를 들어

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; } 
} 

를, 내가보기에 몇 가지 추가 정보를 전달하는 뷰 모델을 만들었습니다

[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); 
    } 

자,이 모든 작품 떨어져에서 :

여기 내 생성 후 작업입니다3210 비트. 중첩 된 객체 내에 속성을 포함하거나 제외 할 수 없습니다.

답변

0

this answer에 따르면, 당신은 같은 것을 할 수있는 :

[Bind(Include="Name, ServiceID")] 
public class Stream 
{ 
... 
} 

다음

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create([Bind(Include="Stream, SelectedService")] StreamCreateVM viewModel) 
{ 
... 
} 
+0

감사합니다,하지만 난 다른 속성에 바인딩 할 필요가 컨트롤러에서 다른 작업을, 그래서이 제안 그것을 배제 할 것이다. –