2016-12-19 48 views
0

有沒有辦法通過屬性白名單子類?WhiteList子類通過綁定

public class VoteQuestionViewModel 
{ 
    [Display(Name = "Vote Question")] 
    public string Name { get; set; } 

    public VoteTypeViewModel VoteType { get; set; } 

}

public class VoteTypeViewModel 
{ 
    public int Id { get; set; } 

    [Display(Name = "Type of Question")] 
    public string Type { get; set; } 

    [Display(Name = "Description")] 
    public string Description { get; set; } 
} 

下面將只會工作到白名單類屬性,但它不會工作到白名單子類屬性:

public async Task<IActionResult> Create([Bind("Name, VoteType.Description")] VoteQuestionViewModel voteQuestion) 

回答

1

您在包含的方法你的問題是唯一的方法。綁定適用於發佈的值。換句話說,它正在查看錶單數據中的鍵名。在這方面,沒有VoteType鍵,永遠不會:只發布該類的屬性,即VoteType.Description

也就是說,使用Bind根本不是非常糟糕的做法,但將它與視圖模型結合使用絕對沒有意義。 Bind的全部要點是允許您在實體類中包含/排除一部分屬性。同樣,視圖模型的全部目的是僅處理視圖需要處理的數據。因此,如果您不希望將某個媒體資源納入該帖子,則請勿將其放在查看模型上。即使這樣,視圖模型也會帶來額外的警告,即數據必須映射到實體類或從實體類映射到它們。這使您能夠明確決定哪些將會映射,哪些不會映射。例如,如果您在視圖中出於某種原因需要Id,但您不希望用戶能夠更改它,則不要將其從視圖模型映射回實體。

+0

好點。最後,我擺脫了綁定功能。我創建了專門用於該視圖的附加ViewModel,然後使用AutoMapper來填充最終模型。 – lucas