2015-10-27 13 views
9

http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx#optionals-and-defaults属性ルーティング - オプションのパラメータが機能していませんか?

属性ルーティングを使用する場合は、オプションのパラメータを使用して、疑問符(?)を付けることができます。しかし、それは私のためには機能しません(ASP.NET Web API 5)。

[Route("staff/{featureID?}")] 
    public List<string> GetStaff(int? featureID) { 
     List<string> staff = null;   
     return staff; 
    } 

私はstaff/1などを使用している場合、それは私が/staffを使用する場合、私はいつもの取得、正常に動作します:

"いいえHTTPリソースが要求URI ...と一致することは認められませんでした" "要求に と一致するコントローラ上でアクションが見つかりませんでした。

参考資料がありません。それとも間違っている?

答えて

1

私が行う場合:

[Route("staff/{featureID=null}")]

代わりの

[Route("staff/{featureID?}")]

それは動作します。

これは技術的には私の質問には答えませんが、それは私の仕事になります!

8

私も同じ問題に遭遇し、少し違って解決しました。しかし、それはまだ私のブログの投稿に配置されているように私のために働かなかった。デフォルトのパラメータ値をルート定義に追加するのではなく、関数定義に追加しました。私が代わりにintstringを使用してnullのルート定義にデフォルトを追加したため、私は正常に動作して私の例のためにこれをしなければならなかった

は私の関数のパラメータは、文字列値"null"を持つようになりました。

+0

ことを見てみると、それはなぜ持って次に同様 –

4

これは、デフォルトの値がnullの場合でも、オプションのパラメータのデフォルト値を常に設定する必要があるためです。この作品理由は次のとおりです。

[Route("staff/{featureID=null}")] 
+6

を「ヌル」の部分に、良い洞察力という方法で行われます、通常の方法ではオプションの引数として完璧な理にかなっています " ? '文字の機能性は全くですか? – Sal