2014-11-24 35 views
0

我有典型的POCO類代表搜索功能的模型。搜索基於GET請求。現在,當我的表單向服務器發出GET請求時,Url按照原樣公開類和屬性名稱。如何在GET請求中披露Entityframework屬性名稱?

用戶看到例如下面的網址,這似乎有點太長,太侵入:

/search?Class1.Property=false&Class2.Something.Property=some_value 

有沒有一種方法,而無需實際重新命名我的實體命名Class1.Property等等?某種類型的映射器可能是?

+0

我認爲你誤解了命名約定。 'Class1.Property = false'意味着action方法將是'public ActionResult(MyClass model)',其中'MyClass'類型包含一個名爲'Class1'的複雜屬性,其中包含一個名爲'Property'的布爾屬性 – 2014-12-01 03:02:14

回答

0

你可以做到這一點使用視圖模型,它映射到一個實體:

public class SearchEntity 
{ 
    public bool SomeBoolProperty { get; set; } 
    public string SearchTerm { get; set; } 
} 

public class SearchViewModel 
{ 
    public bool opt1 { get; set; } 
    public string q { get; set; } 

    public SearchEntity ToEntity() 
    { 
     return new SearchEntity 
     { 
      SomeBoolProperty = opt1, 
      SearchTerm = q, 
     }; 
    } 
} 

給你的網址:

search?opt1=false&q=some_value 

然後,您可以使用SearchViewModel在你的控制器,同時與ToEntity()您可以生成一個用於保存到實體框架的實例。

您可以自動執行映射,例如使用AutoMapper。