4

結果とその機能を利用するために、SPAアプリケーションを作成しようとしています。ただし、データを公開するサービス (Web API など) は完全に別のプロジェクトにあり、IIS で既にホストされています。アップショットをその既存の API にバインドしたいのですが、アップショット (v1.0.0.1) の HTML ヘルパーで確認できることから、次のように、データを公開するコントローラーの型を渡す必要があります。

Html.UpshotContext.DataSource(Of ToDoController)(Function(x) x.GetTodoItems())

ToDoControllerは、同じプロジェクトで定義された、データを公開する ApiController です

私の質問は、同じプロジェクトにない Web API にアップショットをバインドするにはどうすればよいですか? ヘルパーを使用する方法はありますか、それともすべて手動で行う必要がありますか?

両方のプロジェクト (SPA と Web API) から参照できる別のアセンブリにあるため、Model クラス (つまりTodoItem ) にアクセスできますが、Web API プロジェクトで定義されているコントローラーにはアクセスできません。 .

4

1 に答える 1

5

以下を使用できます。

upshot.dataSources = upshot.dataSources || {};

upshot.metadata({"ModelType:#Namespace":
    {
     "key":["Id"],
     "fields":    
        {"Id":{"type":"Int32:#System"},
         "IpAddress":{"type":"String:#System"},
         "Name":{"type":"String:#System"}
        }
    } (and so on, just map everything)
});

var dataSource = new upshot.RemoteDataSource({
    providerParameters: 
        { url: "Your URL", 
          operationName: "Method Name, example: GetCustomers" },
    entityType: "ModelType:#Namespace",
    bufferChanges: true (or false, whatever you like),
    dataContext: undefined,
    mapping: {}
});

もし私があなただったら、コントローラープロジェクトを含むソリューションを一時的に作成することができれば、UpshotContextヘルパーによって生成されたJSをチェックし、それをあなたのページにコピーします(とにかく上記の結果を得るために私がしたことです) )。

于 2012-03-12T17:55:04.973 に答える