В настоящее время я работаю над проектом, в который я хочу загрузить файл (на самом деле не загружать, а выбрать по функции загрузки) и отобразить данные этого файла в виде веб-сетки на мой взгляд. Что я получил так далеко:
My View для загрузки файла JSON:

После загрузки я извлекаю ключи этого файла JSON:

Эти данные, которые я хочу отобразить в WebGrid, не загружая их в базу данных, кто-нибудь знает, как это сделать?
Просмотреть код пока что:
@model List<APIBrokerFrontend.Models.JsonModel>
@{
ViewBag.Title = "Api Broker";
if (Session["userID"] == null)
{
Response.Redirect("~/Login/Index");
}
var grid = new WebGrid(canPage: true, rowsPerPage: 10);
grid.Bind(source: Model, rowCount: ViewBag.TotalRows, autoSortAndPage: false);
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<link href="~/Content/bootstrap.min.css" rel="stylesheet" />
<link href="https://gitcdn.github.io/bootstrap-toggle/2.2.2/css/bootstrap-toggle.min.css" rel="stylesheet">
</head>
<body>
<div class="row">
<div class="col-lg-5 d-flex align-items-stretch">
<h2>API Broker</h2>
</div>
<div class="row" id="content1">
<div class="col-lg-6 d-flex align-items-stretch">
</div>
<!--Search field and button-->
<div class="col-sm-5 d-flex align-items-stretch" style="padding-top: 5%;">
@using (Html.BeginForm("Import", "Mapper", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="form-group" style="padding-left: 12%;">
<p>JSON File: <input type="file" name="jsonFile" /></p>
<input type="submit" value="Import" />
</div>
}
</div>
<div class="row" id="content2">
<div class="col-lg-12 d-flex align-items-stretch">
@grid.Table(tableStyle: "table table-responsive table-striped table-bordered",
columns: grid.Columns(
grid.Column(columnName: "Key", header: "Keys", format:@<text><div class="" data-id="@item.Key" data-propertyname="Key">@item.Key</div></text>)
)
)
</div>
<!--Pagerlist for webgrid-->
<div class="col-lg-12 d-flex align-items-stretch">
@grid.PagerList(mode: WebGridPagerModes.All, paginationStyle: "pagination pagination-small pagination-right")
</div>
@Html.Hidden("dir", grid.SortDirection)
@Html.Hidden("col", grid.SortColumn)
</div>
</div>
</div>
</body>
</html>
Код контроллера:
public class MapperController : Controller
{
// GET: Mapper
public ActionResult Index()
{
return View();
}
public ActionResult Import(HttpPostedFileBase jsonFile)
{
if (!Path.GetFileName(jsonFile.FileName).EndsWith(".json"))
{
ViewBag.ErrorMessage = "No JSON file";
return View();
}
else
{
List<string> jsonData = new List<string>();
using (System.IO.StreamReader reader = new System.IO.StreamReader(jsonFile.InputStream))
{
using (JsonTextReader jsonReader = new JsonTextReader(reader))
{
JObject o2 = (JObject)JToken.ReadFrom(jsonReader);
List<string> keys = o2.Properties().Select(p => p.Name).ToList();
var data = keys;
return View(keys);
}
}
}
}
}
Надеюсь, кто-нибудь может помочь,
Заранее спасибо!