2012-08-28 35 views
0

我有一個數據庫的第一個設計。我想爲我的模型設置默認值,以便用戶可以將編輯器文本框留空以便填充可空字段之一。 EF似乎不希望只將null引入數據庫,所以我希望我可以將默認值設置爲null來表示我的可空屬性。mvc3數據庫第一個模型默認值

即我想插入null到我的數據庫的屬性,如果文本框留空時提交。

我讀過,你可以添加一個構造函數到部分類來做我想做的事。所以,你會主要有:

public partial class MyClass{ 
    public MyClass() 
    { 
     field1 = null; //this would be the default value for field1 
    } 
} 

唯一的問題是我的工作已經有一個構造模型自動生成的部分類,所以我不能添加構造的不同(永久)部分類。我不想更新自動生成的partial類,因爲當我從數據庫更新edmx時它將被覆蓋。

+0

重載構造函數? –

回答

0

該字符串的默認值應該已經爲空,所以我認爲你走錯了路徑。

問題是文本框將始終與表單帖子一起傳遞,即使它是空白的,這將導致您的控制器中出現空字符串而不是空值,即使您找到明確設置您的方法字符串在你的初始類中爲null。

而是在表單回傳後檢查控制器中字符串的值,如果它爲空,則將其設置爲空。

if (String.IsNullOrEmpty(formModel.MyString)) formModel.MyString = null; 

要麼,或創建一個默認模型綁定檢查該字段的模型中綁定的值,而不是設置它,如果它是空的。

+0

我試圖避免在我的控制器中檢查。如果您可以在模型級別具有檢查/默認設置,那麼它將很好,因此只需定義一次即可。我對MVC和EF仍然很陌生,但我真的很喜歡你可以從模型級別的數據註釋中獲得的所有好處,並試圖模擬它。 –

+0

嗯。我不確定當我昨天晚上改變了很多字段以允許空值或者什麼時,我的edmx沒有正確更新,但是當我今天嘗試時,一切都在做我想做的事情(空值插入空白字段)。 –

+0

是的。那時候我想過那個。當想到更多關於這個主題的內容時,我意識到MVC確實將空字段綁定爲null。您可以使用註釋'[DisplayFormat(ConvertEmptyStringToNull = false)]'來更改它,但默認情況下爲true。無論如何,現在很高興它爲你工作。 –