2016-04-06 16 views
0

に特殊文字を持っている私の問題が来ます。WEBAPI 2 GETパラメータ

AngularJs

this.getByContactValue = function (contactValue) { 
     return $http.get("/api/subjects/"+ contactValue+ "/ContactValue"); 
    } 

C#の

[Route("api/subjects/{contactValue}/ContactValue")] 
public IEnumerable<Subject> GetByContactValue(string contactValue) 
{ 
    return repository.GetByContactValue(contactValue); 
} 

応答が404エラーあります。 私はこのよう

this.getByContactValue = function (contactValue) { 
     var request = $http({ 
      method: "get", 
      url: "/api/subjects/ContactValue", //modified the route in c# controller 
      data: contactValue 
     }); 
     return request; 
    } 

に要求を変更することも試みたが、エラーは同じです。

webapiを呼び出す最良の方法はどれですか?最後に、私はこの方法で解決

[Route("api/subjects/ContactValue?contactValue={contactValue}")] 
public IEnumerable<Subject> GetByContactValue(string contactValue) 
{ 
    return repository.GetByContactValue(contactValue); 
} 
+0

最善の方法を通過されましたクエリ文字列またはフォームのパラメータ。エラーが発生しているデータを提供してください。 – SamGhatak

+0

可能な複製http://stackoverflow.com/questions/14359305/mvc-web-api-routing-fails-when-url-contains-encoded-ampersand –

答えて

2

あなたは

$http({ 
    url: "/api/subjects/ContactValue", 
    method: "GET", 
    params: {contactValue: contactValue} 
}); 

更新あなたのアクションとしてクエリ文字列内のデータを渡すために

[Route("api/subjects/ContactValue")] 
public IEnumerable<Subject> GetByContactValue([FromUri]string contactValue) 
{         
    return repository.GetByContactValue(contactValue); 
} 
+1

このように私はこのエラーを受け取ります - 'ルートテンプレートを開始できません'/'または '〜'文字を使用し、 '?'文字を含むことはできません。コントローラーのパラメーターの値を指定しましたか? – lpernice

関連する問題