Связывание с Web API в другом проекте - PullRequest
4 голосов
/ 12 марта 2012

Я пытаюсь создать приложение SPA, чтобы воспользоваться upshot и его возможностями.Однако службы, предоставляющие данные (т. Е. Веб-API), находятся в совершенно отдельном проекте, уже размещенном на IIS.Я хотел бы связать upshot с этим существующим API, но из того, что я вижу в HTML-помощниках для upshot (v1.0.0.1), вам нужно передать тип контроллера, который предоставляет данные, например, так:

Html.UpshotContext.DataSource(Of <strong>ToDoController</strong>)(Function(x) x.GetTodoItems())

где ToDoController - это ApiController, который предоставляет данные, определенные в том же проекте.

Мой вопрос: как я могу связатьв результате веб-API, который не в том же проекте?Можно ли как-нибудь использовать помощников, или мне придется все делать вручную?

У меня есть доступ к классам модели (т.е. TodoItem ), так как они находятся в отдельной сборке, на которую можно ссылаться из обоих проектов (SPA & Web API), но я нене имеет доступа к контроллерам, определенным в проекте веб-API.

1 Ответ

5 голосов
/ 12 марта 2012

Вы можете использовать следующее:

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

Если бы я был вами, Если бы я мог, я бы временно создал решение с проектом Controller, тогда я бы проверил JS, сгенерированный UpshotContext помощник и скопируйте это на свои страницы (что я и сделал, чтобы получить результат выше).

...