2010-06-09 61 views
0

我想改進程序,使其具有適當的構造函數,但也適用於MVC的模型環境。獲取並設置模型中的類 - MVC 2 asp.net

我目前有:

public void recordDocument(int order_id, string filename, string physical_path, string slug, int bytes) 
     { 
      ArchiveDocument doc = new ArchiveDocument(); 
      doc.order_id = order_id; 
      doc.filename = filename; 
      doc.physical_path = physical_path; 
      doc.slug = slug; 
      doc.bytes = bytes; 
      db.ArchiveDocuments.InsertOnSubmit(doc); 
     } 

顯然,這應該是一個構造器,應更改爲精簡:

public void recordDocument(ArchiveDocument doc) 
    { 
     db.ArchiveDocuments.InsertOnSubmit(doc); 
    } 

與設置在其他什麼地方得到& - 不知道語法 - 做我創建了一個部分類?

這樣:創建於某處倉庫 -

ArchiveDocument doc = 
     new ArchiveDocument(order_id, idTaggedFilename, physical_path, slug, bytes); 

然後:

namespace ordering.Models 
{ 

    public partial class ArchiveDocument 
    { 
     int order_id, string filename, string physical_path, string slug, int bytes; 


     public archiveDocument(int order_id, string filename, string physical_path, string slug, int bytes){ 
       this.order_id = order_id; 
       etc 

    } 

} 

我應該如何修改密碼?

回答

1

我會避免使用構造函數模型

我們使用constructorless模型和經銷商的屬性,然後我們使用初始化分配 這樣的DataBinder的可以創建模型,我們得到了最大限度的重用,在這裏我們只分配特定視圖所需的屬性

例如

public class AModel{ 

    public int Id{get;set;} 

    public string Name{get;set;} 

} 

var aModel = new AModel{ 
    Id= dataSource.Id, 
    Name = dataSource.Name 
    }; 
+0

請問爲什麼你不喜歡在模型中使用構造函數?我有時在模型初始化過程中使用它們,需要重新使用它,並且對我來說工作正常。 – 2010-06-09 20:52:22

+0

我們使用模型將數據傳輸到視圖,任何複雜性都在控制器中完成 - 所以我們不需要它們。 它還允許ModelBinder創建模型,如果模型作爲控制器動作中的參數,則模型綁定器只能在有公共無參數構造函數可用時執行此操作。 我們在其他地方使用構造函數來定義創建對象的約定 - 不適用於模型 – 2010-06-10 10:48:49