繁体   English   中英

如何在Webgrid中显示JSON文件而不使用ASP.NET MVC将其上载到数据库?

[英]How to display a JSON file in a webgrid without uploading it to the database using ASP.NET MVC?

我正在进行一个项目,我想上传一个文件(不是真正上传,而是通过上传功能选择),并在我的视图中的webgrid中显示该文件的数据。 到目前为止我得到了什么:

我的视图上传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);
                }
            }
        }
    }
}

希望有人可以提供帮助,

提前致谢!

这取决于您希望数据的瞬态程度。 如果您没有将其上传到任何形式的存储,我认为它是一个非常短期的用途。 因此,您可以做的是缓存数据,或者更容易将数据作为json存储在TempData对象中,然后您可以从相同的TempData对象中检索该数据以在相同或另一个MVC页面中使用。

此外,如果您选择将其存储为json,则始终可以使用NewtonSoft将其解析为对象类型。 希望这可以帮助。 干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM