2012-11-21 70 views
4

這DTO路線是否可以從一個變量開始?

[Route("/{Module}/{Name}")] 
public class ViewEntityList { 
    public string Module { get; set; } 
    public string Name { get; set; } 
} 

使我的應用程序啓動錯誤與

RestPath '/ {模塊}/{名稱}' 在類型 'ViewEntityList' 無效

我可以改變路線以字面開頭(例如/Entity/{Module}/{Name}),但它不是我想要的;此外,我的網址開始顯得過長並且非REST式。

是否有可能開始一個變量的路線?如果沒有,是否有另一種方法可以將包含兩部分的路線映射到特定的DTO?

+0

RouteAttribute來自哪個項目?我發現有幾個項目有一個RouteAttribute類來處理你正在談論的事情,但是我沒有意識到MVC中內置了什麼。 Tim McCall的屬性路由。有一個Stack Exchange使用的。還有其他的。 – Pete

+0

@Pete:這是特定於ServiceStack的。 – Daniel

回答

0

我總是以下:

 //Configure User Defined REST Paths 
     Routes 
      .Add<DTO1>("/service/function/{argument}") 
      .Add<DTO2>("/service/commonsegment/{Function*}") 

爲DT1映射的是 「基本」 的映射,一個URL對應一個DTO。

在DTO2中,您將需要一個名爲「Function」的密鑰,該密鑰會給出URL的第一個「非公共」段的名稱,如果可能的話,URL中預設的任何其他段將被映射到您的DTO2如果它有一個匹配的屬性)。這樣你就可以在不改變Web服務器本身的情況下接受新的函數/參數,只有後臺實現(可能/應該位於外部DLL)。

我希望這會有所幫助。

+0

感謝您的回答,但我不明白這是如何解決這個問題的。 – Daniel

相關問題