Я делаю веб-приложение на C #, в котором я проверяю данные в CosmoDB, которые есть в Azure. Этот cosmoDB содержит документы, которые являются Jsons некоторых структур данных, которые я определил в качестве моделей в своем веб-приложении. Проблема заключается в том, что при создании запроса для различных типов структур в базе данных я должен сделать это как тип объекта, чтобы затем преобразовать его в определенный тип и отобразить на экране в виде HTML-кода. На самом деле у меня есть код, который дает вам учебник по Azure, измененный в соответствии с моим приложением.
Код следующий:
namespace todo
{
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using System.Collections;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
DocumentDBRepository<Object>.Initialize();
}
}
}
Тогда контроллер Home делает:
[ActionName("ECCE")]
public async Task<ActionResult> ECCEAsync(string id)
{
var items = await DocumentDBRepository<Object>.GetItemsAsync(id);
return View((ECCE_SupportData)items);
}
Где класс DocumentDBRepository составляет:
public static async Task<IEnumerable<T>> GetItemsAsync(string collectionId)
{
List<T> results = new List<T>();
try
{
IDocumentQuery<T> query = client.CreateDocumentQuery<T>(
UriFactory.CreateDocumentCollectionUri(DatabaseId, collectionId),
new FeedOptions { MaxItemCount = -1, EnableCrossPartitionQuery = true })
.AsDocumentQuery();
while (query.HasMoreResults)
{
results.AddRange(await query.ExecuteNextAsync<T>());
}
}
catch (Exception)
{
return results;
}
return results;
}
Чтобы позже передать список объектов в html, чтобы увидеть их на экране:
<script type="text/javascript" language="javascript" src="../../Scripts/TableFilter/tablefilter.js"></script>
@model IEnumerable<todo.Models.ECCE.ECCE_SupportData>
@{
ViewBag.Title = "Data";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>ECCE Data</h2>
@if (Model.Count() != 0)
{
<table class="table" id="ECCETable">
<tr>
<th>
@Html.DisplayNameFor(model => model.ECCE_CnfStatus)
</th>
<th>
@Html.DisplayNameFor(model => model.ECCE_ComsStatus.ComStatus)
</th>
<th>
@Html.DisplayNameFor(model => model.ECCE_ComsStatus.UltimoError)
</th>
<th>
@Html.DisplayNameFor(model => model.ECCE_Status.AppVersion.IdApp)
</th>
<th>
@Html.DisplayNameFor(model => model.ECCE_Status.AppVersion.ReqVersion)
</th>
<th>
@Html.DisplayNameFor(model => model.ECCE_Status.AppVersion.SwVersion)
</th>
<th>
@Html.DisplayNameFor(model => model.ECCE_Status.AppStatus)
</th>
<th>
@Html.DisplayNameFor(model => model.ECCE_UvStatus.NumUVs)
</th>
</table>
Проблема в том, что в HomeController при попытке преобразовать объект в мою структуру данных ECCE_SuportData выдает ошибку: вы не можете преобразовать объект типа 'System.Collections.Generic.List`1 [System.Object ] к типу. todo.Models. ECCE.ECCE_SupportData '
Кто-нибудь знает, как я могу преобразовать объект в эту структуру данных?
Заранее спасибо.