1

這是一個後續到這一點: What does MVC3 do with C# Optional Parameters?MVC3可選參數

我有以下簽名的動作:

public ViewResult Show(int Id, PublishingErrorSummary pubErrors=null, String title=null) 

在請求服務器/顯示/ 1 pubErrors不爲空,但標題一片空白。這怎麼可能?這些只是兩個對象,但字符串以某種方式管理爲空。我可以在哪裏修復?

編輯:類定義添加

public class PublishingErrorSummary 
{ 
    public List<string> StepOneErrors { get; set; } 
    public List<string> StepTwoErrors { get; set; } 
    public List<string> StepThreeErrors { get; set; } 
    public List<string> StepFourErrors { get; set; } 
} 

回答

3

PublishingErrorSummary是一個複雜的對象。默認的模型聯編程序總是初始化複雜的對象。將其默認值設置爲null沒有意義。同樣代表標題參數。字符串是引用類型,如果沒有發送請求參數title,它們的默認值將爲空。

+0

感謝您的快速響應! 「 」如果默認模型聯編程序在請求中遇到與此模型的其中一個屬性相對應的鍵,則它將初始化它「 它確實有意義,但沒有鍵對應於PublishingErrorSummary的任何屬性。我剛剛添加了班級的定義。這是否意味着複雜類型總是通過默認綁定器實例化?我的路線是典型的,只有ID是可選的,其他路線中沒有提到。 – 2012-03-18 15:29:36

+0

@ Mariusz.W,你是對的。即使請求中沒有與此模型的屬性匹配的參數,默認模型聯編程序也會始終實例化複雜對象。我已經更新了我的答案。 – 2012-03-18 15:32:03

+0

謝謝!將檢查所有列表是否爲空:D今天沒有心情定製粘合劑! – 2012-03-18 15:36:04