2011-10-27 2 views
4

最初の試合後にすべてのURLセグメントに一致/キャプチャするnancyルールを使用したいと思います。ビュー名/ pageidに/ VISITID /他の何らかのNancyとの初回試合後にすべてのURLセグメントをキャプチャします

と、このようなルール/ /ビュー:

Get["/views/{view}/{all other values}"] = parameters => 
{ 
    string view = parameters.view; 

    List<string> listOfOtherValues = all other parameters.. 

    return ... 
}; 

listOfOtherValues

は次のようにURLを持っている:私はこれをしたいと思っ例えば

なってしまうでしょう:

  • pageidに
  • VISITID
  • 他の何らかの

私はまた、クエリ文字列パラメータのためにこれを行うしたいと思います。 ?/ビュー/ VIEWNAMEたpageID = 1 & VISITID = 34 &他の何らかの=ハロー

次いでlistOfOtherValuesになってしまうであろう:

    ようなURLを与え

  • こんにちは

これはナンシーでも可能ですか?

答えて

4

最初の問題では、キャプチャグループを定義するために、正規表現と単純名を使用できます。つまり、RegExをすべてキャッチするだけです。
もう1つは、Request.Query辞書を列挙するだけです。

ここでは、両方を単一のルートで示すいくつかのコードを示します。あなたは/views/home/abc/def/ghi/?x=1&y=2のようなURLを呼び出し、出力を得ることができる場所にこれにより

public class CustomModule : NancyModule 
{ 
    public CustomModule() { 
     Get["/views/{view}/(?<all>.*)"] = Render; 
    } 

    private Response Render(dynamic parameters) { 
     String result = "View: " + parameters.view + "<br/>"; 
     foreach (var other in ((string)parameters.all).Split('/')) 
      result += other + "<br/>"; 

     foreach (var name in Request.Query) 
      result += name + ": " + Request.Query[name] + "<br/>"; 

     return result; 
    } 
} 

View: home
abc
def
ghi
x: 1
y: 2

注: foreach over Request.Queryはv0.9でサポート+

+0

最初の例では、なぜ私は/views/home/1.2のようなものにマッチできません –