2013-07-01 56 views
1

我有一個名爲「出版物」的模式,它有另一種模式裏面所謂的「出版商」:MVC4的ModelState驗證和所需參數

public class Publication 
{ 
    public int PublicationID { get; set; } 
    public Publisher Publisher { get; set; } 
} 

public class Publisher 
{ 
    public int PublisherID { get; set; } 

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

所以,當我從數據庫中獲取的出版物的數據,我也填寫每個出版物的發佈者信息以根據需要使用它。

當我添加其他出版物,我不得不選擇了一家出版社,這是一個強制性的領域,我有一個包含所有出版商,以便用戶可以選擇該刊物,出版商的頁面一個DropDownList:

<div> 
    @HtmlDropDownListFor(model => model.Publisher.PublisherID, myPublisherList) 
</div> 

而且它填充數據完全正常,但我在該行收到一個錯誤:

if(ModelState.IsValid) 

由於發行者的名稱沒有被指定的,即使我只需要ID。 我不想砸Model.IsValid線,因爲有一堆需要驗證等領域,我想離開它儘可能的乾淨,那麼有沒有一種簡單的方法來填補它的名字值?

我想添加一個隱藏的字段,並使用Javascript來填充每次用戶更改選擇時的值,但我希望儘可能使用清潔和無JavaScript的方法。

謝謝!

回答

0

我用不同型號由於此相同的屬性名稱和結構。

對於視圖:

在動作:

public class PublicationActionModel 
{ 
    public int PublicationID { get; set; } 
    public PublisherActionModel Publisher { get; set; } 
} 

public class PublisherActionModel 
{ 
    public int PublisherID { get; set; } 
}