0

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);
}

..しかし、それは少しばかげているようです。どんな提案でも大歓迎です。

4

1 に答える 1