WebGet メソッドがあるとしましょう:
[WebGet]
public IQueryable<State> GetStatesStartingWithLetter(string letter)
{
return CurrentDataSource.States.Where(s => s.Name.Substring(0, 1).Equals(letter.Substring(0, 1),
StringComparison.InvariantCultureIgnoreCase)).OrderBy(s => s.Name);
}
次のようにブラウザで使用できます。
http://localhost:55576/WcfDataService.svc/GetStatesStartingWithLetter?letter='a'
ただし、メソッドを呼び出すために MVC3 コントローラーで何をする必要がありますか? サービス参照を追加したので、問題なくコンテキストを使用できます。以下のコードは、/Controller/States URL の画面に状態のリストを吐き出します。
public ActionResult States()
{
MyDbContext ctx = new MyDbContext(new Uri("http://localhost:55576/WcfDataService.svc/"));
var temp = from state in ctx.States
select state;
return View(temp);
}
ただし、WebGet メソッドを呼び出すだけの簡単な方法はありませんが、期待どおりにサービスで公開されていません。何か不足していますか?これを行うことで結果を得ることができます:
public ActionResult States()
{
WhelenDbContext ctx = new WhelenDbContext(new Uri("http://localhost:55576/WcfDataService.svc/"));
var temp = ctx.Execute<State>(new Uri("http://localhost:55576/WcfDataService.svc/GetStatesStartingWithLetter?letter='a'"));
return View(temp);
}
..しかし、それは少しばかげているようです。どんな提案でも大歓迎です。