2011-09-07 95 views
4

我不明白爲什麼我的模型沒有被填充。所有發佈的數據都在Request.Form中,但該模型實際上是nullMVC發帖不填充模型

根據this answer on model with collection not populating on postback

換句話說,(...)如果任何所需的字段丟失,或者如果這些值以這樣的方式使得它們不能被轉換爲的類型提交 那麼整個對象將被留空

我已經改變了幾個值類型,但我無法讓它工作。

這裏是我的模型:

public class AddModel 
{ 
    //Get properties 
    public Vehicle vehicle; 

    //Post properties 
    [Required(ErrorMessage = "Please enter a start date")] 
    public DateTime StartDate; 
    public int? StatusCode; 

    public SelectList StatusCodes() 
    { 
     ... 
    } 
} 

你能想到的不是被填充,爲什麼呢?

+0

您的觀點是什麼樣子? –

+0

MedProduct類是什麼樣的?身份證是公共領域還是帶有getter/setter的財產? –

+0

@Jamie,你想讓我發佈視圖的源代碼,還是隻是渲染視圖的截圖?謝謝 – LocustHorde

回答

4

製作AddModel成員Properties - 添加get; set;到字段應該解決您的問題

+0

嗨,我沒有''搞定;設置;''到其他各種模型(更新,新建,modifyWithBase等),他們都很好..我應該添加getter和setter到每個成員屬性?將試用它..請問這是什麼解釋? – LocustHorde

+0

你在OP中有什麼*字段*而不是*屬性*。這也是我的第一本能。差別很小,但通常屬性可以有邏輯背後的邏輯(儘管它們通常不會),而字段是原始成員變量。 'get;'和'set;'是getter和setter方法的默認實現。通常,我通常使用公共API的屬性和私有數據的字段,這些私有數據不直接暴露(儘管可能通過屬性)。網上可能有更正式的最佳做法。 – bambams

2

按@阿爾奇爾的迴應,你應該讓你的公共變量的屬性。雖然這可能適用於類型,但只要增加複雜性,就會遇到問題。當然對於類,但也可能爲可空類型。

模型活頁夾使用反射來將表單字段分析到模型中,並且反射對公共變量的屬性的工作方式不同 - 在這些模型的情況下,the differences will likely be causing the failure here

希望有幫助 - 和帽子提示@archil回答這個(可能)正確,比我快!

+0

哇,好吧它現在正在工作,我還沒有準備好相信這會解決問題..通過編碼恐怖帖子和其他在那裏提到的博客..還有很多要學習! – LocustHorde

+0

現在我很困惑..哪個答案選擇? @ archil的答案解決了問題,但你的答案幫助我理解爲什麼它解決了這個問題..嗯.. – LocustHorde

+3

如果@ archil的答案讓你的模型工作,那麼它可能只是公平的使用他的:) – Timbo