2014-11-24 24 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。